--- /dev/null
+// CS0119: Expression denotes a `type', where a `variable' or `value' was expected
+// Line: 12
+
+class A
+{
+}
+
+class B
+{
+ public B ()
+ {
+ A = 2;
+ }
+}
--- /dev/null
+// CS0119: Expression denotes a `type', where a `variable' or `value' was expected
+// Line: 15
+
+class A
+{
+ public class D
+ {
+ }
+}
+
+class B
+{
+ public B ()
+ {
+ A.D = 2;
+ }
+}
--- /dev/null
+// CS0119: Expression denotes a `type', where a `variable' or `value' was expected
+// Line: 12
+
+public class Foo<T>
+{
+}
+
+class X
+{
+ static void Main ()
+ {
+ Foo<X> = new Foo<X> ();
+ }
+}
+++ /dev/null
-// CS0131: The left-hand side of an assignment must be a variable, a property or an indexer
-// Line: 13
-using System;
-
-public class Foo<T>
-{
-}
-
-class X
-{
- static void Main ()
- {
- Foo<X> = new Foo<X> ();
- }
-}
errorMode = true;
}
}
-
+
Expression SimpleNameResolve (ResolveContext ec, Expression right_side, bool intermediate)
{
Expression e = LookupNameExpression (ec, right_side == null, false);
if (e == null)
return null;
- if (right_side != null)
+ if (right_side != null) {
+ if (e is TypeExpr) {
+ e.Error_UnexpectedKind (ec, ResolveFlags.VariableOrValue, loc);
+ return null;
+ }
+
e = e.ResolveLValue (ec, right_side);
- else
+ } else {
e = e.Resolve (ec);
+ }
//if (ec.CurrentBlock == null || ec.CurrentBlock.CheckInvariantMeaningInBlock (Name, e, Location))
return e;
if (e == null)
return null;
- if (right_side != null)
+ if (right_side != null) {
+ if (e is TypeExpr) {
+ e.Error_UnexpectedKind (rc, ResolveFlags.VariableOrValue, loc);
+ return null;
+ }
+
e = e.ResolveLValue (rc, right_side);
- else
+ } else {
e = e.Resolve (rc, ResolveFlags.VariableOrValue | ResolveFlags.Type);
+ }
return e;
}