public void EnumMemberImplementedAsStringConstantIsNotImported()
        {
            var md = new MockMetadataImporter {
                GetFieldSemantics = f => f.Name == "Member2" ? FieldScriptSemantics.StringConstant("a", "$" + f.Name) : FieldScriptSemantics.Field("$" + f.Name)
            };

            Compile(new[] { "enum MyEnum { Member1, Member2, Member3 }" }, metadataImporter: md);
            FindEnum("MyEnum").Values.Select(v => v.Name).Should().BeEquivalentTo(new[] { "$Member1", "$Member3" });
        }
Exemplo n.º 2
0
        public void FieldsImplementedAsConstantsWorkAsCaseLabels()
        {
            AssertCorrect(
                @"enum E { Value1, Value2 }
public void M() {
	E e = E.Value1;
	// BEGIN
	switch (e) {
		case E.Value1:
			int x = 0;
			break;
		case E.Value2:
			int y = 0;
			break;
		default:
			int z = 0;
			break;
	}
	// END
}",
                @"	switch ($e) {
		case 'Value1': {
			var $x = 0;
			break;
		}
		case 'Value2': {
			var $y = 0;
			break;
		}
		default: {
			var $z = 0;
			break;
		}
	}
", metadataImporter: new MockMetadataImporter {
                GetFieldSemantics = f => f.DeclaringType.Name == "E" ? FieldScriptSemantics.StringConstant(f.Name) : FieldScriptSemantics.Field(f.Name)
            });
        }
Exemplo n.º 3
0
        public void ReadingFieldImplementedAsConstantWorks()
        {
            AssertCorrect(
                @"
public int F1;
public int F2;
public int F3;
public int F4;

public void M() {
	// BEGIN
	var f1 = F1;
	var f2 = F2;
	var f3 = F3;
	var f4 = F4;
	// END
}",
                @"	var $f1 = null;
	var $f2 = 'abcd';
	var $f3 = 1234.5;
	var $f4 = true;
", metadataImporter: new MockMetadataImporter {
                GetFieldSemantics = f => f.Name == "F1" ? FieldScriptSemantics.NullConstant() : (f.Name == "F2" ? FieldScriptSemantics.StringConstant("abcd") : (f.Name == "F3" ? FieldScriptSemantics.NumericConstant(1234.5) : (f.Name == "F4" ? FieldScriptSemantics.BooleanConstant(true) : FieldScriptSemantics.Field(f.Name))))
            });
        }