From 37d5f5071c95ae5ba7f476c86b7329eaca9360e6 Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Tue, 7 Feb 2012 13:50:01 +0100 Subject: [PATCH] lock(obj) -> synchronized(obj) { } --- .../antlr3/src/CS2JTranslator/CS2JMain/Templates.cs | 12 ++---------- .../src/CS2JTranslator/CS2JTransform/JavaMaker.g | 9 +++++++-- .../CS2JTranslator/CS2JTransform/JavaPrettyPrint.g | 13 +------------ .../src/CS2JTranslator/CS2JTransform/NetMaker.g | 8 ++------ 4 files changed, 12 insertions(+), 30 deletions(-) diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs index 78bd6d5..bb34b0d 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/Templates.cs @@ -239,18 +239,10 @@ default_template() ::= << default: >> -lock(comments,exp,block, indent) ::= << - -lock() - ->> - -synchstat(comments,exp,stats) ::= << +synchstat(comments,exp,stat) ::= << synchronized () -{ - -} + >> yield(comments,exp) ::= << diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g index 28cd3e4..5ff927c 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g @@ -2050,8 +2050,13 @@ checked_statement: 'checked' block ; unchecked_statement: 'unchecked' block -> ^(UNCHECKED block); -lock_statement: - 'lock' '(' expression ')' embedded_statement[/* isStatementListCtxt */ false] ; +lock_statement +@init { + CommonTree statAsBlock = null; +}: + l='lock' '(' expression p=')' embedded_statement[/* isStatementListCtxt */ false] + { statAsBlock = dupTree(embeddedStatementToBlock($p.token, $embedded_statement.tree)); } + -> ^(SYNCHRONIZED[$l.token, "synchronized"] expression { statAsBlock }); // TODO: Can we avoid surrounding this with braces if not needed? using_statement[bool isStatementListCtxt] @init { diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g index b07c3ee..48d3b1a 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaPrettyPrint.g @@ -1580,7 +1580,6 @@ embedded_statement returns [bool isSemi, bool isIf, bool indent] | checked_statement -> { $checked_statement.st } | unchecked_statement -> { $unchecked_statement.st } | synchronized_statement -> { $synchronized_statement.st } - | lock_statement -> { $lock_statement.st } | yield_statement -> { $yield_statement.st } | ^('unsafe' { preComments = CollectedComments; } block { someText = %op(); %{someText}.op="unsafe"; %{someText}.post = $block.st; }) -> unsupported(comments = { preComments }, reason = {"unsafe blocks are not supported"}, text = { someText } ) @@ -1681,7 +1680,7 @@ finally_clause: ^('finally' block) -> fin(block = {$block.st}, blockindent = { $block.isSemi }); synchronized_statement: - ^(SYNCHRONIZED expression '{' s+=statement* '}') -> synchstat(exp={ $expression.st }, stats = { $s }); + ^(SYNCHRONIZED expression embedded_statement) -> synchstat(exp={ $expression.st }, stat = { $embedded_statement.st }, indent = { $embedded_statement.indent }); checked_statement @init { @@ -1703,16 +1702,6 @@ unchecked_statement %{someText}.block = $block.st; %{someText}.indent = $block.isSemi; } -> unsupported(reason = {"checked statements are not supported"}, text = { someText } ) ; -lock_statement -@init { - StringTemplate someText = null; -}: - 'lock' '(' expression ')' embedded_statement - { someText = %lock(); - %{someText}.exp = $expression.st; - %{someText}.block = $embedded_statement.st; - %{someText}.indent = $embedded_statement.indent; } -> unsupported(reason = {"lock() statements are not supported"}, text = { someText } ) - ; yield_statement @init { StringTemplate someText = null; diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g index 3fadba2..f078d23 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g @@ -3133,8 +3133,7 @@ embedded_statement[bool isStatementListCtxt] | ^('try' block catch_clauses? finally_clause?) | checked_statement | unchecked_statement - | synchronized_statement // Java: synchronized(obj) {} - | lock_statement + | synchronized_statement | yield_statement | ^('unsafe' block) | fixed_statement @@ -3434,10 +3433,7 @@ unchecked_statement: ^(UNCHECKED block) ; synchronized_statement: - ^(SYNCHRONIZED expression[ObjectType] '{' statement_list '}') ; - -lock_statement: - 'lock' '(' expression[ObjectType] ')' embedded_statement[/* isStatementListCtxt */ false] ; + ^(SYNCHRONIZED expression[ObjectType] embedded_statement[/* isStatementListCtxt */ false]) ; yield_statement: ^(YIELD_RETURN expression[ObjectType])