1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

-translator-blanket-throw=false stops adding "throws Exception" to methods and constructors

This commit is contained in:
Kevin Glynn 2011-07-14 19:01:20 +02:00
parent 669566fc45
commit 317aa189f2
3 changed files with 31 additions and 26 deletions

View File

@ -129,6 +129,7 @@ namespace Twiglet.CS2J.Translator
.Add ("keyfile=", v => cfg.KeyFile = v)
.Add ("translator-keep-parens=", v => cfg.TranslatorKeepParens = Boolean.Parse(v))
.Add ("translator-timestamp-files=", v => cfg.TranslatorAddTimeStamp = Boolean.Parse(v))
.Add ("translator-blanket-throw=", v => cfg.TranslatorBlanketThrow = Boolean.Parse(v))
.Add ("translator-exception-is-throwable=", v => cfg.TranslatorExceptionIsThrowable = Boolean.Parse(v))
.Add ("experimental-enums-numericconsts", v => cfg.EnumsAsNumericConsts = true)
.Add ("experimental-unsigned-translatesigned", v => cfg.UnsignedNumbersToSigned = true)

View File

@ -56,6 +56,11 @@ namespace Twiglet.CS2J.Translator
get; set;
}
public bool TranslatorBlanketThrow
{
get; set;
}
public bool EnumsAsNumericConsts
{
get; set;
@ -108,6 +113,7 @@ namespace Twiglet.CS2J.Translator
TranslatorKeepParens = true;
TranslatorAddTimeStamp = true;
TranslatorExceptionIsThrowable = false;
TranslatorBlanketThrow = true;
EnumsAsNumericConsts = false;
UnsignedNumbersToSigned = false;

View File

@ -1369,7 +1369,7 @@ method_declaration [CommonTree atts, CommonTree mods, List<string> modList, Comm
method_body [bool smotherExceptions] returns [CommonTree exceptionList, bool isEmpty]:
{smotherExceptions}? b=block nb=magicSmotherExceptions[dupTree($b.tree) ]
-> $nb
| b=block el=magicThrowsException[true,$b.tree.Token] { $exceptionList=$el.tree; $isEmpty = $b.isEmpty; }
| b=block el=magicThrowsException[Cfg.TranslatorBlanketThrow,$b.tree.Token] { $exceptionList=$el.tree; $isEmpty = $b.isEmpty; }
-> $b
;
@ -1676,9 +1676,9 @@ interface_property_declaration [CommonTree atts, CommonTree mods, CommonTree typ
i=identifier '{' iads=interface_accessor_declarations[atts, mods, type, $i.text] '}' -> $iads ;
interface_method_declaration [CommonTree atts, CommonTree mods, CommonTree type]:
identifier type_parameter_list?
'(' formal_parameter_list? ')' type_parameter_constraints_clauses? s=';' magicThrowsException[true,$s.token]
'(' formal_parameter_list? ')' type_parameter_constraints_clauses? s=';' magicThrowsException[Cfg.TranslatorBlanketThrow,$s.token]
-> ^(METHOD { dupTree($atts) } { dupTree($mods) } { dupTree($type) }
identifier type_parameter_constraints_clauses? type_parameter_list? formal_parameter_list? magicThrowsException);
identifier type_parameter_constraints_clauses? type_parameter_list? formal_parameter_list? magicThrowsException?);
interface_event_declaration [CommonTree atts, CommonTree mods]:
//attributes? 'new'?
e='event' type identifier ';' -> ^(EVENT[$e.token, "EVENT"] { dupTree($atts) } { dupTree($mods) } type identifier)
@ -1690,8 +1690,8 @@ interface_accessor_declarations [CommonTree atts, CommonTree mods, CommonTree ty
interface_accessor_declaration[atts, mods, type, propName]+
;
interface_accessor_declaration [CommonTree atts, CommonTree mods, CommonTree type, string propName]:
la=attributes? (g='get' gbe=semi magicPropGetter[atts, $la.tree, mods, null, type, $g.token, $gbe.tree, propName, false, ""] -> magicPropGetter
| s='set' sbe=semi magicPropSetter[atts, $la.tree, mods, null, type, $s.token, $sbe.tree, propName, false, ""] -> magicPropSetter)
la=attributes? (g='get' gbe=semi magicPropGetter[atts, $la.tree, mods, null, type, $g.token, null, propName, false, ""] -> magicPropGetter
| s='set' sbe=semi magicPropSetter[atts, $la.tree, mods, null, type, $s.token, null, propName, false, ""] -> magicPropSetter)
;
///////////////////////////////////////////////////////
@ -1755,8 +1755,8 @@ operator_body:
///////////////////////////////////////////////////////
constructor_declaration[CommonTree atts, CommonTree mods, List<string> modList]:
i=identifier '(' p=formal_parameter_list? s=')' init=constructor_initializer? b=constructor_body[$init.tree] magicThrowsException[true,$s.token]
-> ^(CONSTRUCTOR[$i.tree.Token, "CONSTRUCTOR"] { dupTree($atts) } { dupTree($mods) } $i $p? $b magicThrowsException);
i=identifier '(' p=formal_parameter_list? s=')' init=constructor_initializer? b=constructor_body[$init.tree] magicThrowsException[Cfg.TranslatorBlanketThrow,$s.token]
-> ^(CONSTRUCTOR[$i.tree.Token, "CONSTRUCTOR"] { dupTree($atts) } { dupTree($mods) } $i $p? $b magicThrowsException?);
constructor_initializer:
':' tok='this' '(' argument_list? ')'
-> ^(APPLY[$tok.token, "APPLY"] $tok argument_list?) SEMI[$tok.token, ";"]
@ -2087,18 +2087,16 @@ magicCatchVar:
magicPropGetter[CommonTree atts, CommonTree localatts, CommonTree mods, CommonTree localmods, CommonTree type, IToken getTok, CommonTree body, string propName, bool mkBody, string varName]
@init {
CommonTree realBody = body;
CommonTree exceptionList = null;
}:
b=magicGetterBody[mkBody,getTok,varName] { if (mkBody) realBody = $b.tree; } e=magicThrowsException[!mkBody,getTok] { if (!mkBody) exceptionList = $e.tree; }
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } { dupTree(type)} IDENTIFIER[getTok, "get"+propName] { dupTree(realBody) } { exceptionList })
b=magicGetterBody[mkBody,getTok,varName] { if (mkBody) realBody = $b.tree; } e=magicThrowsException[!mkBody && Cfg.TranslatorBlanketThrow,getTok]
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } { dupTree(type)} IDENTIFIER[getTok, "get"+propName] { dupTree(realBody) } magicThrowsException?)
;
magicPropSetter[CommonTree atts, CommonTree localatts, CommonTree mods, CommonTree localmods, CommonTree type, IToken setTok, CommonTree body, string propName, bool mkBody, string varName]
@init {
CommonTree realBody = body;
CommonTree exceptionList = null;
}:
b=magicSetterBody[mkBody,setTok,varName] { if (mkBody) realBody = $b.tree; } e=magicThrowsException[!mkBody,setTok] { if (!mkBody) exceptionList = $e.tree; }
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } ^(TYPE[setTok, "TYPE"] IDENTIFIER[setTok, "void"] ) IDENTIFIER[setTok, "set"+propName] ^(PARAMS[setTok, "PARAMS"] { dupTree(type)} IDENTIFIER[setTok, "value"]) { dupTree(realBody) } { exceptionList } )
b=magicSetterBody[mkBody,setTok,varName] { if (mkBody) realBody = $b.tree; } e=magicThrowsException[!mkBody && Cfg.TranslatorBlanketThrow,setTok]
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } ^(TYPE[setTok, "TYPE"] IDENTIFIER[setTok, "void"] ) IDENTIFIER[setTok, "set"+propName] ^(PARAMS[setTok, "PARAMS"] { dupTree(type)} IDENTIFIER[setTok, "value"]) { dupTree(realBody) } magicThrowsException? )
;
magicSemi:
@ -2128,8 +2126,8 @@ magicIdxGetter[CommonTree atts, CommonTree localatts, CommonTree mods, CommonTre
adaptor.AddChild(name, (CommonTree)adaptor.Create(IDENTIFIER, getTok, "get___idx"));
}
}:
magicThrowsException[true,getTok]
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } { dupTree(type)} { name } { dupTree(idxparams) } { dupTree(body) } magicThrowsException)
magicThrowsException[Cfg.TranslatorBlanketThrow,getTok]
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } { dupTree(type)} { name } { dupTree(idxparams) } { dupTree(body) } magicThrowsException?)
;
magicIdxSetter[CommonTree atts, CommonTree localatts, CommonTree mods, CommonTree localmods, CommonTree type, CommonTree iface, IToken setTok, CommonTree body, CommonTree idxparams]
@init {
@ -2146,8 +2144,8 @@ magicIdxSetter[CommonTree atts, CommonTree localatts, CommonTree mods, CommonTre
adaptor.AddChild(augParams, (CommonTree)adaptor.Create(IDENTIFIER, setTok, "value"));
}
:
magicThrowsException[true,setTok]
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } ^(TYPE[setTok, "TYPE"] IDENTIFIER[setTok, "void"] ) { name } { augParams } { dupTree(body) } magicThrowsException )
magicThrowsException[Cfg.TranslatorBlanketThrow,setTok]
-> ^(METHOD[$type.token, "METHOD"] { dupTree(mods) } ^(TYPE[setTok, "TYPE"] IDENTIFIER[setTok, "void"] ) { name } { augParams } { dupTree(body) } magicThrowsException? )
;
// keving: can't get this to work reasonably
@ -2200,7 +2198,7 @@ magicMainWrapper[bool isOn, IToken tok, CommonTree body]:
^(TYPE[tok, "TYPE"] IDENTIFIER[tok, "void"])
IDENTIFIER[tok, "main"] ^(PARAMS[tok, "PARAMS"] ^(TYPE[tok, "TYPE"] IDENTIFIER[tok,"String"] OPEN_BRACKET[tok, "["] CLOSE_BRACKET[tok, "]"]) IDENTIFIER[tok, "args"])
OPEN_BRACE[tok, "{"] { dupTree(body) } SEMI[tok, ";"] CLOSE_BRACE[tok, "}"]
magicThrowsException)
magicThrowsException?)
->
;
@ -2220,7 +2218,7 @@ magicFinally[IToken tok, CommonTree statement_list]:
;
magicFinalize[IToken tok, CommonTree body]:
magicThrowsException[true,tok]
magicThrowsException[Cfg.TranslatorBlanketThrow,tok]
->
^(METHOD[tok, "METHOD"]
PROTECTED[tok, "protected"]
@ -2252,18 +2250,18 @@ magicDelegateInterface[IToken tok, CommonTree return_type, CommonTree identifier
@init {
AddToImports("java.util.List");
}:
e1=magicThrowsException[true, tok]
e2=magicThrowsException[true, tok]
e1=magicThrowsException[Cfg.TranslatorBlanketThrow, tok]
e2=magicThrowsException[Cfg.TranslatorBlanketThrow, tok]
-> OPEN_BRACE[tok, "{"] // System.Collections.Generic.IList
^(METHOD[tok, "METHOD"] { dupTree(return_type) } IDENTIFIER[tok,"Invoke"] { dupTree(formal_parameter_list) } $e1)
^(METHOD[tok, "METHOD"] ^(TYPE ^(DOT[tok, "."] ^(DOT[tok, "."] ^(DOT[tok, "."] IDENTIFIER[tok, "System"] IDENTIFIER[tok, "Collections"]) IDENTIFIER[tok, "Generic"]) IDENTIFIER[tok, "IList"] LTHAN[tok,"<"] ^(TYPE { dupTree( identifier) } { mkGenericArgs(tok, tyArgs) }) GT[tok,">"])) IDENTIFIER[tok,"GetInvocationList"] $e2)
^(METHOD[tok, "METHOD"] { dupTree(return_type) } IDENTIFIER[tok,"Invoke"] { dupTree(formal_parameter_list) } $e1?)
^(METHOD[tok, "METHOD"] ^(TYPE ^(DOT[tok, "."] ^(DOT[tok, "."] ^(DOT[tok, "."] IDENTIFIER[tok, "System"] IDENTIFIER[tok, "Collections"]) IDENTIFIER[tok, "Generic"]) IDENTIFIER[tok, "IList"] LTHAN[tok,"<"] ^(TYPE { dupTree( identifier) } { mkGenericArgs(tok, tyArgs) }) GT[tok,">"])) IDENTIFIER[tok,"GetInvocationList"] $e2?)
CLOSE_BRACE[tok, "}"]
;
// First execute all but the last one, then execute the last one and (if non-void) return its result.
magicMultiInvokerMethod[IToken tok, CommonTree return_type, bool retIsVoid, CommonTree type, CommonTree formal_parameter_list, CommonTree argument_list, List<String> tyArgs]
:
e1=magicThrowsException[true, tok]
e1=magicThrowsException[Cfg.TranslatorBlanketThrow, tok]
-> {retIsVoid}?
^(METHOD[tok, "METHOD"] PUBLIC[tok, "public"] { dupTree($return_type) } IDENTIFIER[tok,"Invoke"] { dupTree($formal_parameter_list) }
OPEN_BRACE[tok, "{"]
@ -2275,7 +2273,7 @@ magicMultiInvokerMethod[IToken tok, CommonTree return_type, bool retIsVoid, Comm
CLOSE_BRACE[tok, "}"]
)
CLOSE_BRACE[tok, "}"]
magicThrowsException
magicThrowsException?
)
-> ^(METHOD[tok, "METHOD"] PUBLIC[tok, "public"] { dupTree($return_type) } IDENTIFIER[tok,"Invoke"] { dupTree($formal_parameter_list) }
OPEN_BRACE[tok, "{"]
@ -2290,7 +2288,7 @@ magicMultiInvokerMethod[IToken tok, CommonTree return_type, bool retIsVoid, Comm
)
^(RETURN[tok, "return"] ^(APPLY[tok, "APPLY"] ^(DOT[tok,"."] IDENTIFIER[tok,"prev"] IDENTIFIER[tok,"Invoke"]) { $argument_list }))
CLOSE_BRACE[tok, "}"]
magicThrowsException
magicThrowsException?
)
;