Skip to content

Commit b671fd0

Browse files
committed
adding extension methods from import.hx to completion suggestions (#1234)
1 parent 4ce3062 commit b671fd0

File tree

2 files changed

+32
-8
lines changed

2 files changed

+32
-8
lines changed

src/main/java/com/intellij/plugins/haxe/ide/inspections/HaxeUnusedImportInspection.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ public String getShortName() {
7070
@Override
7171
public ProblemDescriptor[] checkFile(@NotNull PsiFile file, @NotNull InspectionManager manager, boolean isOnTheFly) {
7272
if (!(file instanceof HaxeFile)) return null;
73+
// ignoring "import.hx" as it's a special file that is used as imports for other files
74+
if (file.getVirtualFile().getName().equals("import.hx")) return null;
75+
7376
List<HaxeImportStatement> unusedImports = HaxeImportUtil.findUnusedImports(file);
7477
if (unusedImports.isEmpty()) {
7578
return ProblemDescriptor.EMPTY_ARRAY;

src/main/java/com/intellij/plugins/haxe/lang/psi/impl/HaxeReferenceImpl.java

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,14 +1430,26 @@ private static void addUsingVariants(Set<HaxeComponentName> variants,
14301430
HaxeReferenceImpl reference) {
14311431

14321432
if (ourClass == null) return;
1433-
1434-
HaxeFileModel.fromElement(reference).getUsingModels().stream()
1435-
.flatMap(model -> model.getExtensionMethods(ourClass, reference).stream())
1436-
.map(HaxeMemberModel::getNamePsi)
1437-
.forEach(name -> {
1438-
variants.add(name);
1439-
variantsWithExtension.add(name);
1440-
});
1433+
HaxeFileModel haxeFileModel = HaxeFileModel.fromElement(reference);
1434+
if(haxeFileModel != null) {
1435+
1436+
List<HaxeUsingModel> importHxUsingModels = findImportHxFileUsingModels(haxeFileModel);
1437+
importHxUsingModels.stream()
1438+
.flatMap(model -> model.getExtensionMethods(ourClass, reference).stream())
1439+
.map(HaxeMemberModel::getNamePsi)
1440+
.forEach(name -> {
1441+
variants.add(name);
1442+
variantsWithExtension.add(name);
1443+
});
1444+
1445+
haxeFileModel.getUsingModels().stream()
1446+
.flatMap(model -> model.getExtensionMethods(ourClass, reference).stream())
1447+
.map(HaxeMemberModel::getNamePsi)
1448+
.forEach(name -> {
1449+
variants.add(name);
1450+
variantsWithExtension.add(name);
1451+
});
1452+
}
14411453

14421454
List<HaxeMethodModel> extensionMethodsFromMeta = ourClass.getModel().getExtensionMethodsFromMeta();
14431455
extensionMethodsFromMeta.stream()
@@ -1450,6 +1462,15 @@ private static void addUsingVariants(Set<HaxeComponentName> variants,
14501462

14511463
}
14521464

1465+
private static @NotNull List<HaxeUsingModel> findImportHxFileUsingModels(HaxeFileModel haxeFileModel) {
1466+
final List<HaxeUsingModel> usingModels = new ArrayList<>();
1467+
HaxeResolveUtil.walkDirectoryImports(haxeFileModel, (importModel) ->{
1468+
usingModels.addAll(importModel.getUsingModels());
1469+
return true;
1470+
});
1471+
return usingModels;
1472+
}
1473+
14531474
private static void addClassVariants(Set<HaxeComponentName> suggestedVariants, @Nullable HaxeClass haxeClass, boolean filterByAccess,
14541475
@Nullable HaxeGenericResolver resolver) {
14551476
if (haxeClass == null) {

0 commit comments

Comments
 (0)