From 365aa35e6c5f3017e8c5e9b4f13b7e2f75515b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 31 May 2025 14:01:05 +0200 Subject: [PATCH] AS1/2/3 highlighter - method references fix --- .../script/ActionScript3SimpleParser.java | 2 +- .../script/ActionScript2SimpleParser.java | 17 ++++++++++------- .../flash/simpleparser/SimpleParser.java | 1 - 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3SimpleParser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3SimpleParser.java index 640f57573..1cb1a3a72 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3SimpleParser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3SimpleParser.java @@ -452,7 +452,7 @@ public class ActionScript3SimpleParser implements SimpleParser { lexer.pushback(s); } List subvariables = new ArrayList<>(); - if (functionName != null && !functionName.isEmpty()) { + if (!isMethod && functionName != null && !functionName.isEmpty()) { subvariables.add(new Variable(true, functionName, functionNamePos)); } for (int i = 0; i < paramNames.size() - (hasRest ? 1 : 0); i++) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2SimpleParser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2SimpleParser.java index b34ec6200..ca5c973d3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2SimpleParser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2SimpleParser.java @@ -193,7 +193,7 @@ public class ActionScript2SimpleParser implements SimpleParser { List subvariables = new ArrayList<>(); Reference subHasEval = new Reference<>(false); - if (!functionName.isEmpty()) { + if (!isMethod && !functionName.isEmpty()) { variables.add(0, new Variable(true, functionName, functionNamePosition)); } @@ -243,17 +243,20 @@ public class ActionScript2SimpleParser implements SimpleParser { s = lex(); } - if (expectedIdentifier(errors, s, lexer.yyline())) { - if (!isInterface) { - variables.add(function(errors, !isInterface, isStatic ? className + "." + s.value.toString() : "this." + s.value.toString(), isStatic ? -1 : s.position, true, traitVariables, inTellTarget, hasEval, isStatic)); - } + if (!expectedIdentifier(errors, s, lexer.yyline())) { + break; } + traitVariables.add(new Variable(true, isStatic ? className + "." + s.value.toString() : "this." + s.value.toString(), s.position, isStatic)); + if (!isInterface) { + variables.add(function(errors, !isInterface, isStatic ? className + "." + s.value.toString() : "this." + s.value.toString(), isStatic ? -1 : s.position, true, traitVariables, inTellTarget, hasEval, isStatic)); + } break; case VAR: s = lex(); - if (expectedIdentifier(errors, s, lexer.yyline())) { - traitVariables.add(new Variable(true, isStatic ? className + "." + s.value.toString() : "this." + s.value.toString(), s.position, isStatic)); + if (!expectedIdentifier(errors, s, lexer.yyline())) { + break; } + traitVariables.add(new Variable(true, isStatic ? className + "." + s.value.toString() : "this." + s.value.toString(), s.position, isStatic)); s = lex(); if (s.type == SymbolType.COLON) { type(errors, false, variables); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java index 6c39bb081..0cbaf743c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java @@ -18,7 +18,6 @@ package com.jpexs.decompiler.flash.simpleparser; import java.io.IOException; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List;