Browse Source

Fixed GlobalFullNamespaceGenericFieldReferenceExpressionTest.

newNRvisualizers
Mike Krüger 15 years ago
parent
commit
bd51beedee
  1. 20
      ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/MemberReferenceExpressionTests.cs
  2. 11
      ICSharpCode.NRefactory/CSharp/Parser/CSharpParser.cs
  3. 7
      ICSharpCode.NRefactory/CSharp/Parser/mcs/expression.cs
  4. 5
      ICSharpCode.NRefactory/CSharp/Parser/mcs/visit.cs

20
ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/MemberReferenceExpressionTests.cs

@ -57,19 +57,23 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression @@ -57,19 +57,23 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
);
}
[Test, Ignore("Aliases not yet implemented")]
[Test]
public void GlobalFullNamespaceGenericFieldReferenceExpressionTest()
{
ParseUtilCSharp.AssertExpression(
"global::Namespace.Subnamespace.SomeClass<string>.myField",
new MemberReferenceExpression {
Target = new MemberType {
var target = new MemberType {
Target = new SimpleType("global"),
IsDoubleColon = true,
MemberName = "Namespace"
}.Member("Subnamespace"),
TypeArguments = { new PrimitiveType("string") }
}.Member("myField")
}.Member("Subnamespace").Member ("SomeClass");
target.AddChild (new PrimitiveType("string"), MemberReferenceExpression.Roles.TypeArgument);
ParseUtilCSharp.AssertExpression(
"global::Namespace.Subnamespace.SomeClass<string>.myField",
new MemberReferenceExpression {
Target = target,
MemberName = "myField"
}
);
}

11
ICSharpCode.NRefactory/CSharp/Parser/CSharpParser.cs

@ -1698,7 +1698,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -1698,7 +1698,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override object Visit (MemberAccess memberAccess)
{
Expression result;
Console.WriteLine (memberAccess.LeftExpression + "/" + memberAccess.Name);
if (memberAccess.LeftExpression is Indirection) {
var ind = memberAccess.LeftExpression as Indirection;
result = new PointerReferenceExpression ();
@ -1725,6 +1725,15 @@ namespace ICSharpCode.NRefactory.CSharp @@ -1725,6 +1725,15 @@ namespace ICSharpCode.NRefactory.CSharp
return result;
}
public override object Visit (QualifiedAliasMember qualifiedAliasMember)
{
var result = new MemberType ();
result.Target = new SimpleType (qualifiedAliasMember.alias);
result.IsDoubleColon = true;
result.AddChild (new Identifier (qualifiedAliasMember.Name, Convert (qualifiedAliasMember.Location)), MemberReferenceExpression.Roles.Identifier);
return new TypeReferenceExpression () { Type = result };
}
public override object Visit (Constant constant)
{
if (constant.GetValue () == null)

7
ICSharpCode.NRefactory/CSharp/Parser/mcs/expression.cs

@ -7522,7 +7522,7 @@ namespace Mono.CSharp @@ -7522,7 +7522,7 @@ namespace Mono.CSharp
/// </summary>
public class QualifiedAliasMember : MemberAccess
{
readonly string alias;
public readonly string alias;
public static readonly string GlobalAlias = "global";
public QualifiedAliasMember (string alias, string identifier, Location l)
@ -7603,6 +7603,11 @@ namespace Mono.CSharp @@ -7603,6 +7603,11 @@ namespace Mono.CSharp
{
// Nothing
}
public override object Accept (StructuralVisitor visitor)
{
return visitor.Visit (this);
}
}
/// <summary>

5
ICSharpCode.NRefactory/CSharp/Parser/mcs/visit.cs

@ -344,6 +344,11 @@ namespace Mono.CSharp @@ -344,6 +344,11 @@ namespace Mono.CSharp
return null;
}
public virtual object Visit (QualifiedAliasMember qualifiedAliasMember)
{
return null;
}
public virtual object Visit (LocalVariableReference localVariableReference)
{
return null;

Loading…
Cancel
Save