diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs index 04b521d..f3efd91 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs @@ -289,6 +289,7 @@ lambda(args, body) ::= << () => >> array_construct(type, args, inits) ::= ""new []"" +array_construct_nobracks(type, inits) ::= ""new "" array_initializer(init) ::= ""{ }"" application(func, funcparens, args) ::= ""()"" index(func, funcparens, args) ::= ""[]"" diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g index 48dec01..da02a48 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g @@ -474,6 +474,8 @@ namespace_member_declarations: namespace_member_declaration @init { string ns = $NSContext::currentNS; bool isCompUnit = false; + CommonTree atts = null; + CommonTree mods = null; } @after { if (isCompUnit) { @@ -491,7 +493,7 @@ namespace_member_declaration } }: namespace_declaration - | attributes? modifiers? ty=type_declaration[$attributes.tree, mangleModifiersForType($modifiers.tree)] { isCompUnit = true; } + | attributes? { atts = dupTree($attributes.tree); } modifiers? { mods = dupTree($modifiers.tree); } ty=type_declaration[atts, mangleModifiersForType(mods)] { isCompUnit = true; } ; // type_declaration is only called at the top level, so each of the types declared // here will become a Java compilation unit (and go to its own file) diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g index 7eb699b..53f63a7 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g @@ -516,7 +516,7 @@ primary_or_array_creation_expression returns [int precedence]: array_creation_expression returns [int precedence]: ^(NEW_ARRAY (type ('[' expression_list? ']' rank_specifiers? ai1=array_initializer? -> array_construct(type = { $type.st }, args = { $expression_list.st }, inits = { $ai1.st }) // new int[4] - | ai2=array_initializer -> array_construct(type = { $type.st }, inits = { $ai2.st }) + | ai2=array_initializer -> array_construct_nobracks(type = { $type.st }, inits = { $ai2.st }) ) | rank_specifier array_initializer // var a = new[] { 1, 10, 100, 1000 }; // int[] )