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 25f12a018..a05c2ff3d 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 @@ -461,10 +461,11 @@ public class ActionScript3SimpleParser implements SimpleParser { if (hasRest) { subvariables.add(new Variable(true, paramNames.get(paramNames.size() - 1), paramPositions.get(paramNames.size() - 1))); } - subvariables.add(new Variable(true, "arguments", -1)); //??? FIXME Reference needsActivation2 = new Reference<>(false); if (!isInterface && !isNative) { - expectedType(errors, SymbolType.CURLY_OPEN); + s = lex(); + expected(errors, s, lexer.yyline(), SymbolType.CURLY_OPEN); + subvariables.add(new Variable(true, "arguments", -s.position - 1)); commands(errors, thisType, needsActivation2, importedClasses, openedNamespaces, new Stack<>(), new HashMap<>(), new HashMap<>(), true, isMethod, isStatic, 0, subvariables, abc); expectedType(errors, SymbolType.CURLY_CLOSE); } else { 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 eddd8c30d..0ccb0ef80 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 @@ -83,7 +83,7 @@ public interface SimpleParser { positionToStatic.put(v.position, v.isStatic != null ? v.isStatic : isStatic); } else { if (!privateVarFullNameToDefinitionPosition.containsKey(v.name) - && !privateVarNameToDefinitionPosition.containsKey(v.getFirstName())) { + && !privateVarNameToDefinitionPosition.containsKey(v.name)) { parentVarFullNameToDefinitionPosition.put(v.name, -v.position - 1); parentVarNameToDefinitionPosition.put(v.getLastName(), -v.position - 1); privateVarFullNameToDefinitionPosition.put(v.name, -v.position - 1); @@ -100,7 +100,7 @@ public interface SimpleParser { if (privateVarFullNameToDefinitionPosition.containsKey(v.name)) { definitionPos = privateVarFullNameToDefinitionPosition.get(v.name); } else { - definitionPos = privateVarNameToDefinitionPosition.get(v.getFirstName()); + definitionPos = privateVarNameToDefinitionPosition.get(v.name); } boolean staticDefinition = definitionPos >= 0 ? positionToStatic.get(definitionPos) : true; if (!(!staticDefinition && isStatic)) { @@ -137,7 +137,7 @@ public interface SimpleParser { positionToStatic.put(v.position, v.isStatic != null ? v.isStatic : isStatic); } else { if (!privateVarFullNameToDefinitionPosition.containsKey(v.name) - && !privateVarNameToDefinitionPosition.containsKey(v.getFirstName())) { + && !privateVarNameToDefinitionPosition.containsKey(v.name)) { parentVarFullNameToDefinitionPosition.put(v.name, -v.position - 1); parentVarNameToDefinitionPosition.put(v.getFirstName(), -v.position - 1); privateVarFullNameToDefinitionPosition.put(v.name, -v.position - 1); @@ -154,7 +154,7 @@ public interface SimpleParser { if (privateVarFullNameToDefinitionPosition.containsKey(v.name)) { definitionPos = privateVarFullNameToDefinitionPosition.get(v.name); } else { - definitionPos = privateVarNameToDefinitionPosition.get(v.getFirstName()); + definitionPos = privateVarNameToDefinitionPosition.get(v.name); } boolean staticDefinition = definitionPos >= 0 ? positionToStatic.get(definitionPos) : true; if (!(!staticDefinition && isStatic)) { diff --git a/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java b/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java index 1e26ed254..4d69fb853 100644 --- a/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java +++ b/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java @@ -188,7 +188,7 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC && (token.start == pos)) { return token; } - return null; + return getNearestTokenAt(sDoc, pos); } private Token getNearestTokenAt(SyntaxDocument sDoc, int pos) { @@ -261,7 +261,9 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC markerKind = underLineMarkOccurencesPainter; } } - Markers.markToken(pane, definitionToken, markerKind); + if (tokenTypes.contains(definitionToken.type)) { + Markers.markToken(pane, definitionToken, markerKind); + } occurencesPositions.add(definitionToken.start); for (int i : definitionPosToReferences.get(definitionPos)) { Token referenceToken = getIdentifierTokenAt(sDoc, i);