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" }); }
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) }); }
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)))) }); }