diff --git a/src/common/com/intellij/plugins/haxe/lang/psi/HaxeResolver.java b/src/common/com/intellij/plugins/haxe/lang/psi/HaxeResolver.java index 0718bf319..62707a4ed 100644 --- a/src/common/com/intellij/plugins/haxe/lang/psi/HaxeResolver.java +++ b/src/common/com/intellij/plugins/haxe/lang/psi/HaxeResolver.java @@ -430,11 +430,14 @@ private static List resolveByClassAndSymbol(@Nullable Haxe if (leftClass.isAbstract()) { HaxeAbstractClassModel model = (HaxeAbstractClassModel)leftClass.getModel(); if (model.isForwarded(reference.getReferenceName())) { - final HaxeClass underlyingClass = model.getUnderlyingClass(reference.getSpecialization().toGenericResolver(leftClass)); - if (underlyingClass != null) { - member = underlyingClass.getModel().getMember(reference.getReferenceName()); - if (member != null) { - return asList(member.getNamePsi()); + HaxeGenericSpecialization specialization = reference.getSpecialization(); + if(specialization !=null){ + final HaxeClass underlyingClass = model.getUnderlyingClass(specialization.toGenericResolver(leftClass)); + if (underlyingClass != null) { + member = underlyingClass.getModel().getMember(reference.getReferenceName()); + if (member != null) { + return asList(member.getNamePsi()); + } } } } diff --git a/src/common/com/intellij/plugins/haxe/lang/psi/impl/HaxeReferenceImpl.java b/src/common/com/intellij/plugins/haxe/lang/psi/impl/HaxeReferenceImpl.java index 8a3f07fb2..83a4027d9 100644 --- a/src/common/com/intellij/plugins/haxe/lang/psi/impl/HaxeReferenceImpl.java +++ b/src/common/com/intellij/plugins/haxe/lang/psi/impl/HaxeReferenceImpl.java @@ -230,11 +230,10 @@ private JavaResolveResult[] multiResolve(boolean incompleteCode, boolean resolve @Nullable public PsiElement resolveToComponentName() { final ResolveResult[] resolveResults = multiResolve(true, false); - final PsiElement result = resolveResults.length == 0 || - resolveResults.length > 1 || + final PsiElement result = resolveResults.length != 1 || !resolveResults[0].isValidResult() ? null : resolveResults[0].getElement(); - if (result != null && result instanceof HaxeNamedComponent) { + if (result instanceof HaxeNamedComponent) { return ((HaxeNamedComponent)result).getComponentName(); } diff --git a/src/common/com/intellij/plugins/haxe/model/HaxePackageModel.java b/src/common/com/intellij/plugins/haxe/model/HaxePackageModel.java index 57c390f8c..ada22b15c 100644 --- a/src/common/com/intellij/plugins/haxe/model/HaxePackageModel.java +++ b/src/common/com/intellij/plugins/haxe/model/HaxePackageModel.java @@ -125,9 +125,23 @@ public HaxeFileModel getFileModel(String fileName) { protected HaxeFile getFile(String fileName) { PsiDirectory directory = root.access(path); if (directory != null && directory.isValid()) { - PsiFile file = directory.findFile(fileName + ".hx"); - if (file != null && file.isValid() && file instanceof HaxeFile) { - return (HaxeFile)file; + PsiFile file; + try { + String fName = fileName + ".hx"; + //TODO @ Eric. What could be the source of a request for "Unknown.hx" ? + if(fName.equals("Unknown.hx")){ + return null; + } + //file = directory.findFile(fileName + ".hx"); + file = directory.findFile(fName); + if (file != null && file.isValid() && file instanceof HaxeFile) { + return (HaxeFile)file; + } + } catch(Exception e){ + //System.out.println("-----------------------------------"); + //System.out.println(fileName + ".hx"); + //System.out.println("-----------------------------------"); + System.out.println(Arrays.toString(e.getStackTrace())); } }