From 56163a7334c053a5b638c93d1b806c6e7d4f6338 Mon Sep 17 00:00:00 2001 From: m0rkeulv Date: Sat, 13 Jul 2024 00:57:36 +0200 Subject: [PATCH] Add new `haxe.Rest` abstract to rest parameter logic --- .../annotator/semantics/HaxeCallExpressionUtil.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/intellij/plugins/haxe/ide/annotator/semantics/HaxeCallExpressionUtil.java b/src/main/java/com/intellij/plugins/haxe/ide/annotator/semantics/HaxeCallExpressionUtil.java index 0a16e4b86..a990545dc 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/annotator/semantics/HaxeCallExpressionUtil.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/annotator/semantics/HaxeCallExpressionUtil.java @@ -877,7 +877,7 @@ private static ResultHolder resolveParameterType(HaxeParameterModel parameter, H if (type.getClassType() != null) { SpecificHaxeClassReference classType = type.getClassType(); @NotNull ResultHolder[] specifics = classType.getSpecifics(); - if (isExternRestClass(classType)) { + if (isExternRestClass(classType) || isRestClass(classType)) { if (specifics.length == 1) { return specifics[0]; } @@ -1041,8 +1041,8 @@ private static boolean isVarArg(HaxeParameterModel model) { if (classType.isArray() && isMacroExpr(specificType)) { return true; } - // haxe.extern.Rest<> - return isExternRestClass(classType); + // haxe.extern.Rest<> / haxe.Rest<> + return isExternRestClass(classType) || isRestClass(classType); } } } @@ -1056,6 +1056,10 @@ private static boolean isMacroExpr(SpecificHaxeClassReference classReference) { return classReference.getHaxeClass().getQualifiedName().equals("haxe.macro.Expr"); } + private static boolean isRestClass(SpecificHaxeClassReference classReference) { + if (classReference.getHaxeClass() == null) return false; + return classReference.getHaxeClass().getQualifiedName().equals("haxe.Rest"); + } private static boolean isExternRestClass(SpecificHaxeClassReference classReference) { if (classReference.getHaxeClass() == null) return false; return classReference.getHaxeClass().getQualifiedName().equals("haxe.extern.Rest");