- public class NullLiteral : Constant {
- public NullLiteral (Location loc):
- base (loc)
- {
- eclass = ExprClass.Value;
- type = typeof (NullLiteral);
- }
-
- override public string AsString ()
- {
- return GetSignatureForError ();
- }
-
- public override Expression CreateExpressionTree (EmitContext ec)
- {
- // HACK: change type to be object
- type = TypeManager.object_type;
- return base.CreateExpressionTree (ec);
- }
-
- public override Expression DoResolve (EmitContext ec)
- {
- return this;
- }
-
- public override void Emit (EmitContext ec)
- {
- ec.ig.Emit (OpCodes.Ldnull);
- }
-
- public override string ExprClassName {
- get {
- return GetSignatureForError ();
- }
- }
-
- public override string GetSignatureForError ()
+ // Note: C# specification null-literal is NullLiteral of NullType type
+ //
+ public class NullLiteral : NullConstant
+ {
+ //
+ // Default type of null is an object
+ //
+ public NullLiteral (Location loc)
+ : base (InternalType.NullLiteral, loc)