Mono.CSharp.BlockConstantDeclaration.ResolveInitializer C# (CSharp) Method

ResolveInitializer() protected method

protected ResolveInitializer ( BlockContext bc, LocalVariable li, Mono.CSharp.Expression initializer ) : Mono.CSharp.Expression
bc BlockContext
li LocalVariable
initializer Mono.CSharp.Expression
return Mono.CSharp.Expression
		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;
		}
	}