Changeset 783

Show
Ignore:
Timestamp:
09/20/07 23:36:52 (1 year ago)
Author:
asterite
Message:

More...

Files:

Legend:

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

    r777 r783  
    367367    int OutCannotBeFinal = 157; 
    368368    int ScopeCannotBeRefOrOut = 158; 
     369    int IncompatibleTypeForOperator = 159; 
    369370 
    370371} 
  • trunk/descent.core/src/descent/internal/compiler/parser/BinExp.java

    r782 r783  
    99import static descent.internal.compiler.parser.Constfold.Equal; 
    1010 
     11import java.awt.image.ImageProducer; 
    1112import java.math.BigInteger; 
    1213 
    1314import org.eclipse.core.runtime.Assert; 
    1415 
     16import descent.core.compiler.IProblem; 
    1517import descent.internal.compiler.parser.Constfold.BinExp_fp; 
    1618 
     
    127129 
    128130    public void incompatibleTypes(SemanticContext context) { 
    129         error("incompatible types for ((%s) %s (%s)): '%s' and '%s'", e1 
    130                 .toChars(context), op.toString(), e2.toChars(context), e1.type 
    131                 .toChars(context), e2.type.toChars(context)); 
     131        context.acceptProblem(Problem.newSemanticTypeError(IProblem.IncompatibleTypeForOperator, 0, e1.start, e2.start + e2.length - e1.start, new String[] { e1.type.toChars(context), e2.type.toChars(context), op.toString() })); 
    132132    } 
    133133 
  • trunk/descent.core/src/descent/internal/compiler/parser/ExpStatement.java

    r775 r783  
    9191            exp.checkSideEffect(0, context); 
    9292            exp = exp.optimize(0, context); 
     93            sourceExp.setBinding(exp); 
    9394        } 
    9495         
    95         sourceExp.setBinding(exp); 
    9696        return this; 
    9797    } 
  • trunk/descent.core/src/descent/internal/compiler/parser/ForeachStatement.java

    r768 r783  
    414414 
    415415        // Resolve any forward referenced goto's 
    416         for (int j = 0; j < gotos.size(); j++) { 
    417             CompoundStatement cs = (CompoundStatement) gotos.get(j); 
    418             GotoStatement gs = (GotoStatement) cs.statements.get(0); 
    419  
    420             if (gs.label.statement == null) { // 'Promote' it to this scope, and replace with a return 
    421                 cases.add(gs); 
    422                 s[0] = new ReturnStatement(loc, new IntegerExp(loc, cases 
    423                         .size() + 1)); 
    424                 cs.statements.set(0, s[0]); 
     416        if (gotos != null) { 
     417            for (int j = 0; j < gotos.size(); j++) { 
     418                CompoundStatement cs = (CompoundStatement) gotos.get(j); 
     419                GotoStatement gs = (GotoStatement) cs.statements.get(0); 
     420     
     421                if (gs.label.statement == null) { // 'Promote' it to this scope, and replace with a return 
     422                    cases.add(gs); 
     423                    s[0] = new ReturnStatement(loc, new IntegerExp(loc, cases 
     424                            .size() + 1)); 
     425                    cs.statements.set(0, s[0]); 
     426                } 
    425427            } 
    426428        } 
  • trunk/descent.core/src/descent/internal/compiler/parser/Problem.java

    r777 r783  
    412412        case ScopeCannotBeRefOrOut: 
    413413            return String.format(ProblemMessages.ScopeCannotBeRefOrOut); 
     414        case IncompatibleTypeForOperator: 
     415            return String.format(ProblemMessages.IncompatibleTypeForOperator, arguments[0], arguments[1], arguments[2]); 
    414416        default: 
    415417            return ""; 
  • trunk/descent.core/src/descent/internal/compiler/parser/ProblemMessages.java

    r777 r783  
    169169    public static String OutCannotBeFinal; 
    170170    public static String ScopeCannotBeRefOrOut; 
     171    public static String IncompatibleTypeForOperator; 
    171172     
    172173    static { 
  • trunk/descent.core/src/descent/internal/compiler/parser/ProblemMessages.properties

    r777 r783  
    157157OutCannotBeFinal=<<TODO>> 
    158158ScopeCannotBeRefOrOut=<<TODO>> 
     159IncompatibleTypeForOperator=Types %1$s and %2$s are incompatible for %3$s 
  • trunk/descent.core/src/descent/internal/compiler/parser/TemplateDeclaration.java

    r781 r783  
    388388        if (parameters != null) { 
    389389            p = new TemplateParameters(); 
    390             p.ensureCapacity(parameters.size()); 
     390            p.setDim(parameters.size()); 
    391391            for (int i = 0; i < p.size(); i++) { 
    392392                TemplateParameter tp = parameters.get(i); 
  • trunk/descent.core/template/problem/problems.txt

    r777 r783  
    473473    formatString=<<TODO>> 
    474474    numArgs=0 
     475IncompatibleTypeForOperator 
     476    formatString=Types %1$s and %2$s are incompatible for %3$s 
     477    numArgs=3 
    475478 
    476  
    477  
    478  
    479  
     479     
     480     
     481     
     482     
     483     
     484