Browse Source

VB.NET nullable value types

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3376 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Markus Palme 18 years ago
parent
commit
7a09eef396
  1. 866
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  2. 20
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  3. 18
      src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs

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

File diff suppressed because it is too large Load Diff

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

@ -2065,6 +2065,9 @@ TypeName<out TypeReference typeref>
(. ArrayList rank = null; .) (. ArrayList rank = null; .)
= =
NonArrayTypeName<out typeref, false> NonArrayTypeName<out typeref, false>
ArrayTypeModifiers<out rank> ArrayTypeModifiers<out rank>
(. if (rank != null && typeref != null) { (. if (rank != null && typeref != null) {
typeref.RankSpecifier = (int[])rank.ToArray(typeof(int)); typeref.RankSpecifier = (int[])rank.ToArray(typeof(int));
@ -2100,7 +2103,24 @@ NonArrayTypeName<out TypeReference typeref, bool canBeUnbound>
} }
) )
| "Object" (. typeref = new TypeReference("System.Object"); .) | "Object" (. typeref = new TypeReference("System.Object"); .)
[
"?"
(.
List<TypeReference> typeArguments = new List<TypeReference>(1);
if (typeref != null) typeArguments.Add(typeref);
typeref = new TypeReference("System.Nullable", typeArguments);
.)
]
| PrimitiveTypeName<out name> (. typeref = new TypeReference(name); .) | PrimitiveTypeName<out name> (. typeref = new TypeReference(name); .)
[
"?"
(.
List<TypeReference> typeArguments = new List<TypeReference>(1);
if (typeref != null) typeArguments.Add(typeref);
typeref = new TypeReference("System.Nullable", typeArguments);
.)
]
. .
QualIdentAndTypeArguments<out TypeReference typeref, bool canBeUnbound> QualIdentAndTypeArguments<out TypeReference typeref, bool canBeUnbound>

18
src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs

@ -241,6 +241,24 @@ namespace ICSharpCode.NRefactory.Tests.Ast
Assert.IsInstanceOfType(typeof(PrimitiveExpression), ((NamedArgumentExpression)oce.ObjectInitializer.CreateExpressions[1]).Expression); Assert.IsInstanceOfType(typeof(PrimitiveExpression), ((NamedArgumentExpression)oce.ObjectInitializer.CreateExpressions[1]).Expression);
} }
[Test]
public void VBNetNullableObjectCreateExpressionTest()
{
ObjectCreateExpression oce = ParseUtilVBNet.ParseExpression<ObjectCreateExpression>("New Integer?");
Assert.AreEqual("System.Nullable", oce.CreateType.SystemType);
Assert.AreEqual(1, oce.CreateType.GenericTypes.Count);
Assert.AreEqual("Integer", oce.CreateType.GenericTypes[0].Type);
}
[Test]
public void VBNetNullableObjectArrayCreateExpressionTest()
{
ObjectCreateExpression oce = ParseUtilVBNet.ParseExpression<ObjectCreateExpression>("New Integer?()");
Assert.AreEqual("System.Nullable", oce.CreateType.SystemType);
Assert.AreEqual(1, oce.CreateType.GenericTypes.Count);
Assert.AreEqual("Integer", oce.CreateType.GenericTypes[0].Type);
}
#endregion #endregion
} }
} }

Loading…
Cancel
Save