Changeset 1248

Show
Ignore:
Timestamp:
09/02/08 11:29:09 (4 months ago)
Author:
asterite
Message:

Fixed some problems related to D2: thread local storage, manifest enum constants.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/descent.core/src/descent/core/Flags.java

    r1235 r1248  
    249249     
    250250    /** 
     251     * Thread property flag. 
     252     * @since 2.0 
     253     */ 
     254    public static final int AccThread = 0x8000000; 
     255     
     256    /** 
    251257     * Nothrow property flag. 
    252258     * @since 2.0 
     
    490496    public static boolean isConst(long flags) { 
    491497        return (flags & AccConst) != 0; 
     498    } 
     499     
     500    /** 
     501     * Returns whether the given integer includes the <code>__thread</code> modifier. 
     502     * 
     503     * @param flags the flags 
     504     * @return <code>true</code> if the <code>__thread</code> modifier is included 
     505     */ 
     506    public static boolean isThread(long flags) { 
     507        return (flags & AccThread) != 0; 
    492508    } 
    493509     
  • trunk/descent.core/src/descent/core/dom/ASTConverter.java

    r1237 r1248  
    33573357        case TOKpure: b.setModifierKeyword(descent.core.dom.Modifier.ModifierKeyword.PURE_KEYWORD); break; 
    33583358        case TOKnothrow: b.setModifierKeyword(descent.core.dom.Modifier.ModifierKeyword.NOTHROW_KEYWORD); break; 
     3359        case TOKtls: b.setModifierKeyword(descent.core.dom.Modifier.ModifierKeyword.THREAD_KEYWORD); break; 
    33593360        default: 
    33603361            throw new IllegalStateException("Invalid modifier: " + a.tok); 
  • trunk/descent.core/src/descent/core/dom/Modifier.java

    r1227 r1248  
    6868        PURE_KEYWORD("pure", PURE), 
    6969        NOTHROW_KEYWORD("nothrow", NOTHROW), 
     70        THREAD_KEYWORD("__thread", THREAD), 
    7071        ; 
    7172         
     
    271272     
    272273    /** 
     274     * "__thread" modifier constant (bit mask). 
     275     */ 
     276    public static final int THREAD = Flags.AccThread; 
     277     
     278    /** 
    273279     * The "modifierKeyword" structural property of this node type. 
    274280     */ 
  • trunk/descent.core/src/descent/internal/compiler/lookup/ModuleBuilder.java

    r1246 r1248  
    518518 
    519519    public void fillField(Module module, Dsymbols members, final IField field) throws JavaModelException { 
    520         if (field.isVariable()) { 
     520        if (field.isVariable() || field.isEnumConstant()) { // enum constant for D2, like "enum int foo = 2;" 
    521521            VarDeclaration member = new VarDeclaration(getLoc(module, field), getType(field.getTypeSignature()), getIdent(field), getInitializer(field)); 
    522522            member.setJavaElement(field); 
  • trunk/descent.core/src/descent/internal/compiler/parser/TypeEnum.java

    r1236 r1248  
    5858        // Initialize to first member of enum 
    5959        Expression e; 
    60         e = new IntegerExp(loc, (integer_t) sym.defaultval, this); 
     60        if (context.isD2()) { 
     61            e = (Expression) sym.defaultval; 
     62        } else { 
     63            e = new IntegerExp(loc, (integer_t) sym.defaultval, this); 
     64        } 
    6165        return e; 
    6266    } 
  • trunk/descent.core/src/descent/internal/core/SourceField.java

    r1194 r1248  
    156156 */ 
    157157public String getTypeSignature() throws JavaModelException { 
    158     // Descent: if I'm an enum constant, my type is my parent's type 
    159     if (this.isEnumConstant()) { 
    160         return getParent().getElementSignature(); 
    161     } 
    162      
    163158    // Else, return my signature 
    164159    SourceFieldElementInfo info = (SourceFieldElementInfo) getElementInfo(); 
    165     return info.getTypeSignature(); 
     160    String signature = info.getTypeSignature(); 
     161     
     162    // If I'm an enum constant, my type is my parent's type 
     163    if (signature == null && this.isEnumConstant()) { 
     164        signature = getParent().getElementSignature(); 
     165    } 
     166     
     167    return signature; 
    166168} 
    167169/** 
  • trunk/descent.ui/src/descent/internal/ui/javaeditor/EditorUtility.java

    r559 r1248  
    483483            } 
    484484        } 
    485         /* TODO JDT UI binary 
    486485        else if (input instanceof IClassFileEditorInput) { 
    487486            jProject= ((IClassFileEditorInput)input).getClassFile().getJavaProject(); 
    488487        } 
    489         */ 
    490488        return jProject; 
    491489    } 
  • trunk/descent.ui/src/descent/internal/ui/text/java/JavaCodeScanner.java

    r1116 r1248  
    156156        "__traits", //$NON-NLS-1$, 
    157157        "__overloadset", //$NON-NLS-1$ 
     158        "__thread", //$NON-NLS-1$ 
    158159        "nothrow", //$NON-NLS-1$ 
    159160        "pure", //$NON-NLS-1$