Browse Source

VB.NET: Identifier expression can have type arguments;

Added tests for AddressOf expression

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3378 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Markus Palme 17 years ago
parent
commit
90197b2101
  1. 1318
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  2. 3
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  3. 1
      src/Libraries/NRefactory/Test/NRefactoryTests.csproj
  4. 49
      src/Libraries/NRefactory/Test/Parser/Expressions/AddressOfExpressionTests.cs

1318
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs

File diff suppressed because it is too large Load Diff

3
src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

@ -1646,6 +1646,9 @@ SimpleNonInvocationExpression<out Expression pexpr> @@ -1646,6 +1646,9 @@ SimpleNonInvocationExpression<out Expression pexpr>
| /* 11.4.4 */ Identifier
(. pexpr = new IdentifierExpression(t.val); .)
(. pexpr.StartLocation = t.Location; pexpr.EndLocation = t.EndLocation; .)
[ IF (la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of)
"(" "Of" TypeArgumentList<((IdentifierExpression)pexpr).TypeArguments> ")"
]
| (. string val = String.Empty; .)
( PrimitiveTypeName<out val> | "Object" (. val = "Object"; .) )
"." (. t.val = ""; .) Identifier (. pexpr = new MemberReferenceExpression(new TypeReferenceExpression(val), t.val); .)

1
src/Libraries/NRefactory/Test/NRefactoryTests.csproj

@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
<Compile Include="Lexer\CSharp\PreprocessingTests.cs" />
<Compile Include="Lexer\VBNet\CustomLexerTests.cs" />
<Compile Include="Parser\CheckParentVisitor.cs" />
<Compile Include="Parser\Expressions\AddressOfExpressionTests.cs" />
<Compile Include="Parser\Expressions\LambdaExpressionTests.cs" />
<Compile Include="Parser\Expressions\QueryExpressionTests.cs" />
<Compile Include="Output\SnippetConversion.cs" />

49
src/Libraries/NRefactory/Test/Parser/Expressions/AddressOfExpressionTests.cs

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Markus Palme" email="markuspalme@gmx.de"/>
// <version>$Revision: 3125 $</version>
// </file>
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.Parser;
using ICSharpCode.NRefactory.Ast;
namespace ICSharpCode.NRefactory.Tests.Ast
{
[TestFixture]
public class AddressOfExpressionTests
{
#region VB.NET
[Test]
public void SimpleAddressOfExpressionTest()
{
AddressOfExpression ae = ParseUtilVBNet.ParseExpression<AddressOfExpression>("AddressOf t");
Assert.IsNotNull(ae);
Assert.IsInstanceOfType(typeof(IdentifierExpression), ae.Expression);
Assert.AreEqual("t", ((IdentifierExpression)ae.Expression).Identifier, "t");
}
[Test]
public void GenericAddressOfExpressionTest()
{
AddressOfExpression ae = ParseUtilVBNet.ParseExpression<AddressOfExpression>("AddressOf t(Of X)");
Assert.IsNotNull(ae);
Assert.IsInstanceOfType(typeof(IdentifierExpression), ae.Expression);
Assert.AreEqual("t", ((IdentifierExpression)ae.Expression).Identifier, "t");
Assert.AreEqual(1, ((IdentifierExpression)ae.Expression).TypeArguments.Count);
Assert.AreEqual("X", ((IdentifierExpression)ae.Expression).TypeArguments[0].Type);
}
#endregion
#region C#
// no C# representation
#endregion
}
}
Loading…
Cancel
Save