AS3 - "internal" keyword support

This commit is contained in:
Jindra Petřík
2022-12-03 19:33:13 +01:00
parent 3771e02ba2
commit 8388d6adf4
7 changed files with 56 additions and 2 deletions

View File

@@ -659,7 +659,7 @@ public class ActionScript3Parser {
List<Map.Entry<String, Map<String, String>>> metadata = parseMetadata();
s = lex();
while (s.isType(SymbolType.STATIC, SymbolType.PUBLIC, SymbolType.PRIVATE, SymbolType.PROTECTED, SymbolType.OVERRIDE, SymbolType.FINAL, SymbolType.DYNAMIC, SymbolGroup.IDENTIFIER)) {
while (s.isType(SymbolType.STATIC, SymbolType.PUBLIC, SymbolType.PRIVATE, SymbolType.PROTECTED, SymbolType.OVERRIDE, SymbolType.FINAL, SymbolType.DYNAMIC, SymbolGroup.IDENTIFIER, SymbolType.INTERNAL)) {
if (s.type == SymbolType.FINAL) {
if (isFinal) {
throw new AVM2ParseException("Only one final keyword allowed", lexer.yyline());
@@ -710,6 +710,9 @@ public class ActionScript3Parser {
throw new AVM2ParseException("Interface cannot have public, private or protected modifier", lexer.yyline());
}
break;
case INTERNAL:
namespace = packageInternalNs;
break;
}
s = lex();
}

View File

@@ -45,7 +45,7 @@ public class Namespace {
public static final String[] nameSpaceKindNames = new String[]{"Namespace", "PrivateNamespace", "PackageNamespace", "PackageInternalNs", "ProtectedNamespace", "ExplicitNamespace", "StaticProtectedNs"};
public static final String[] namePrefixes = new String[]{"", "private", "public", "", "protected", "explicit", "protected"};
public static final String[] namePrefixes = new String[]{"", "private", "public", "internal", "protected", "explicit", "protected"};
public int kind;