From b95326690defc6027ad79c7605014cfa9b3e2c64 Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Fri, 21 Jan 2011 18:23:00 +0100 Subject: [PATCH] translate qualified type names --- CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g index 1c4a824..e12e66a 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g @@ -622,10 +622,16 @@ commas: type_name returns [string name, TypeRepTemplate dotNetType]: namespace_or_type_name { $name = $namespace_or_type_name.name; $dotNetType = findType($namespace_or_type_name.name); } ; -namespace_or_type_name returns [String name, List tyargs]: +namespace_or_type_name returns [String name, List tyargs] +@init { + TypeRepTemplate tyRep = null; +}: type_or_generic { $name = $type_or_generic.name; $tyargs = $type_or_generic.tyargs; } | ^('::' namespace_or_type_name type_or_generic) { $name = "System.Object"; } // give up, we don't support these - | ^(d='.' n1=namespace_or_type_name type_or_generic) { WarningAssert($n1.tyargs == null, $d.token.Line, "Didn't expect type arguments in prefix of type name"); $name = $n1.name + "." + $type_or_generic.name; $tyargs = $type_or_generic.tyargs; } ; + | ^(d='.' n1=namespace_or_type_name tg1=type_or_generic) { WarningAssert($n1.tyargs == null, $d.token.Line, "Didn't expect type arguments in prefix of type name"); $name = $n1.name + "." + $type_or_generic.name; $tyargs = $type_or_generic.tyargs; tyRep = findType($name); if (tyRep != null) Imports.Add(tyRep.Imports); } + -> { tyRep != null }? IDENTIFIER[$d.token, tyRep.Java] + -> ^($d $n1 $tg1) + ; type_or_generic returns [String name, List tyargs] :