# PsiUtil.resolveClassInClassTypeOnly(type) can not solve expect enum

**URL:** <https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666>\
**Category:** IntelliJ Platform\
**Created:** [February 24, 2025, 8:41am UTC](https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666 "2025-02-24T08:41:08Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![kings](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/kings/32/382_2.png) [@kings](https://platform.jetbrains.com/u/kings)\
**Post date:** [February 24, 2025, 8:41am UTC](https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666/1 "2025-02-24T08:41:08Z")

</div>

```auto
data class OrderRequest(
    val orderType: OrderType,
)

expect enum class OrderType {
  ASC,
  DESC,
}

```

When parse OrderRequest using PSI API, PsiUtil.resolveClassInClassTypeOnly(type) return null, but when I remove the keywords `expect` as the following ,it do not return null.

```auto
 enum class OrderType {
  ASC,
  DESC,
}

```

so when I get the `PsiType` for the field, how I can judge it is enum.

when I use `((PsiClassType) psiType).resolve().isEnum()` it return false.

 ![image](https://us1.discourse-cdn.com/flex001/uploads/jetbrains_platform/original/1X/55bef6bd728db04fc733017d87ac767150360997.png)

---

<div class="post-metadata">

**Author:** ![anet](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/anet/32/357_2.png) [@anet](https://platform.jetbrains.com/u/anet)\
**Post date:** [April 2, 2025, 8:14am UTC](https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666/7 "2025-04-02T08:14:01Z")

</div>

Sorry for the late reply.

It seems that you deal with kotlin code through java API. That’s possible generally because of java-kotlin interop which is based on “light classes”. But this interop works for jvm projects and it doesn’t exists in kmp by default. “expect” means that you probably inside common code though. Could you please provide more details about your project and how do you parse/get type to call PsiUtil’s method.

Thanks,  
Anna

---

<div class="post-metadata">

**Author:** ![kings](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/kings/32/382_2.png) [@kings](https://platform.jetbrains.com/u/kings)\
**Post date:** [April 2, 2025, 9:10am UTC](https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666/9 "2025-04-02T09:10:26Z")

</div>

I have no demo, but you can get new kt class like mine. And use PSI api to get psiClass of **OrderRequest** and then use psiClass.getAllFields() to get the type of property. Then use code `((PsiClassType) psiType).resolve().isEnum()`

---

<div class="post-metadata">

**Author:** ![anet](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/anet/32/357_2.png) [@anet](https://platform.jetbrains.com/u/anet)\
**Post date:** [April 2, 2025, 9:33am UTC](https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666/10 "2025-04-02T09:33:32Z")

</div>

Do you call `KtFile#getClasses` then or how do you retrieve `PsiClass` from kotlin file? Is your project KMP project? And where do you place your kotlin file with `expect` keyword?

---

<div class="post-metadata">

**Author:** ![kings](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/kings/32/382_2.png) [@kings](https://platform.jetbrains.com/u/kings)\
**Post date:** [April 2, 2025, 9:48am UTC](https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666/11 "2025-04-02T09:48:24Z")

</div>

```auto
// how to get PsiClass
//PsiType psiType
PsiClassReferenceType t = (PsiClassReferenceType) PsiUtil.extractIterableTypeParameter(psiType,false);
PsiClass psiClass = t.resolve();

```

It’s my intellij idea plugin code

---

<div class="post-metadata">

**Author:** ![anet](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/anet/32/357_2.png) [@anet](https://platform.jetbrains.com/u/anet)\
**Post date:** [April 2, 2025, 10:06am UTC](https://platform.jetbrains.com/t/psiutil-resolveclassinclasstypeonly-type-can-not-solve-expect-enum/666/12 "2025-04-02T10:06:07Z")

</div>

1. Do you target KMP projects?
2. Where is your `KtFile` located in the sample project?
3. How do you get `PsiClass` from `KtFile`?

Could you please answer to my questions above?
