protected XCodeTypeReference BuildName(XSharpParser.NameContext context) { XCodeTypeReference expr = null; // var sName = context.GetText(); //if (!sName.Contains(".") && !sName.Contains(":") && !sName.Contains(">")) //{ // return BuildTypeReference(sName); //} if (!sName.EndsWith(">")) { System.Type type = findType(sName); if (type != null) { return(new XCodeTypeReference(type)); } } if (context is XSharpParser.QualifiedNameContext) { XSharpParser.QualifiedNameContext qual = (XSharpParser.QualifiedNameContext)context; expr = BuildName(qual.Left); expr = BuildTypeReference(expr.BaseType + "." + BuildSimpleName(qual.Right).BaseType); } else if (context is XSharpParser.SimpleOrAliasedNameContext) { var alias = context as XSharpParser.SimpleOrAliasedNameContext; var name = alias.Name as XSharpParser.AliasedNameContext; // if (name is XSharpParser.AliasQualifiedNameContext) { XSharpParser.AliasQualifiedNameContext al = (XSharpParser.AliasQualifiedNameContext)name; expr = BuildSimpleName(al.Right); expr = BuildTypeReference(al.Alias.GetText() + "::" + expr.BaseType); } else if (name is XSharpParser.GlobalQualifiedNameContext) { var gqn = name as XSharpParser.GlobalQualifiedNameContext; expr = BuildSimpleName(gqn.Right); expr = BuildTypeReference("global::" + expr.BaseType); } else if (name is XSharpParser.IdentifierOrGenericNameContext) { var id = name as XSharpParser.IdentifierOrGenericNameContext; expr = BuildSimpleName(id.Name); } } if (sName.Contains(">")) { // work around to fix type problems with generics expr.UserData[XSharpCodeConstants.USERDATA_CODE] = sName; } // return(expr); }
protected XCodeTypeReference buildName(XSharpParser.NameContext context) { XCodeTypeReference expr = null; // var sName = context.GetText(); if (context is XSharpParser.QualifiedNameContext) { XSharpParser.QualifiedNameContext qual = (XSharpParser.QualifiedNameContext)context; expr = buildName(qual.Left); expr = buildTypeReference(expr.TypeName + "." + buildSimpleName(qual.Right).TypeName); } else if (context is XSharpParser.SimpleOrAliasedNameContext) { var alias = context as XSharpParser.SimpleOrAliasedNameContext; var name = alias.Name as XSharpParser.AliasedNameContext; // if (name is XSharpParser.AliasQualifiedNameContext) { XSharpParser.AliasQualifiedNameContext al = (XSharpParser.AliasQualifiedNameContext)name; expr = buildSimpleName(al.Right); expr = buildTypeReference(al.Alias.GetText() + "::" + expr.TypeName); } else if (name is XSharpParser.GlobalQualifiedNameContext) { var gqn = name as XSharpParser.GlobalQualifiedNameContext; expr = buildSimpleName(gqn.Right); expr = buildTypeReference("global::" + expr.TypeName); } else if (name is XSharpParser.IdentifierOrGenericNameContext) { var id = name as XSharpParser.IdentifierOrGenericNameContext; expr = buildSimpleName(id.Name); } } // return(expr); }