Wiki

Ticket #379: EnumDecl-writeSharpDef.patch

File EnumDecl-writeSharpDef.patch, 1.2 KB (added by thriwkin, 3 years ago)
  • SharpGenerator.cobra

     
    966966        sw.write('enum [_name]') 
    967967        storageType = _storageType 
    968968        if storageType and storageType is not .compiler.intType 
    969             # Cannot say UInt64 because: 
    970             # C# error: Type byte, sbyte, short, ushort, int, uint, long, or ulong expected 
     969            # C# 4.0 Spec 14.1: "An enum declaration may explicitly declare an underlying type of  
     970            #     byte, sbyte, short, ushort, int, uint, long or ulong. " 
    971971            st = storageType to IntType 
    972             branch st.size 
    973                 on  8, t = 'byte' 
    974                 on 16, t = 'short' 
    975                 on 32, t = 'int' 
    976                 on 64, t = 'long' 
    977                 else, throw FallThroughException(st) 
    978             if not st.isSigned, t = 'u' + t 
     972            if st.isSigned 
     973                branch st.size 
     974                    on  8, t = 'sbyte' 
     975                    on 16, t = 'short' 
     976                    on 32, t = 'int' 
     977                    on 64, t = 'long' 
     978                    else, throw FallThroughException(st) 
     979            else 
     980                branch st.size 
     981                    on  8, t = 'byte' 
     982                    on 16, t = 'ushort' 
     983                    on 32, t = 'uint' 
     984                    on 64, t = 'ulong' 
     985                    else, throw FallThroughException(st) 
    979986            sw.write(' : [t]') 
    980987        sw.write(' {\n') 
    981988        sw.indent