protected override Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer) { initializer = initializer.Resolve (bc); if (initializer == null) return null; var c = initializer as Constant; if (c == null) { initializer.Error_ExpressionMustBeConstant (bc, initializer.Location, li.Name); return null; } c = c.ConvertImplicitly (bc, li.Type); if (c == null) { if (TypeManager.IsReferenceType (li.Type)) initializer.Error_ConstantCanBeInitializedWithNullOnly (bc, li.Type, initializer.Location, li.Name); else initializer.Error_ValueCannotBeConverted (bc, initializer.Location, li.Type, false); return null; } li.ConstantValue = c; return initializer; }