@@ -56,7 +56,7 @@ import com.intellij.psi.impl.file.PsiDirectoryImpl
5656import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference
5757import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet
5858import com.intellij.psi.impl.source.tree.LeafPsiElement
59- import com.intellij.psi.search.ProjectScope
59+ import com.intellij.psi.templateLanguages.OuterLanguageElement
6060import com.intellij.psi.util.PsiTreeUtil
6161import com.intellij.psi.util.elementType
6262import com.intellij.psi.util.parents
@@ -148,6 +148,19 @@ class EmberUtils {
148148 }
149149
150150 val r = ref as PsiElement ? ? : exp
151+
152+ if (r is JSVariable ) {
153+ val v = r.children.getOrNull(1 )
154+ if (v != null ) {
155+ val viewProvider = file.containingFile.viewProvider
156+ val ts = viewProvider.findElementAt(v.textOffset, JavaScriptSupportLoader .TYPESCRIPT )
157+ val js = viewProvider.findElementAt(v.textOffset, JavaScriptSupportLoader .ECMA_SCRIPT_6 )
158+ if (ts is OuterLanguageElement || js is OuterLanguageElement ) {
159+ return r
160+ }
161+ }
162+ }
163+
151164 val func = r?.children?.find { it is JSCallExpression }
152165 if (func is JSCallExpression ) {
153166 return func
@@ -765,7 +778,8 @@ class EmberUtils {
765778 }
766779
767780 fun getComponentReferenceData (f : PsiElement ): ComponentReferenceData {
768- val file = resolveDefaultExport(f.containingFile)?.containingFile ? : f
781+ val defaultExport = resolveDefaultExport(f.containingFile)
782+ val file = defaultExport?.containingFile ? : f
769783 var name = file.containingFile.name.split(" ." ).first()
770784 val dir = file.containingFile.parent as PsiDirectoryImpl ?
771785 var template: PsiFile ? = null
@@ -803,6 +817,7 @@ class EmberUtils {
803817 } else {
804818 cls = findDefaultExportClass(tsFile)
805819 ? : findDefaultExportClass(containingFile)
820+ ? : defaultExport
806821 ? : file
807822 }
808823
0 commit comments