diff --git a/sources/zweic/Analyzer.scala b/sources/zweic/Analyzer.scala index 5918917..91e5511 100755 --- a/sources/zweic/Analyzer.scala +++ b/sources/zweic/Analyzer.scala @@ -45,12 +45,12 @@ tree.match { case FieldDecl(Formal(name, typ)) => // TODO check that field does not yet exist! - ownerClass.enterField(FieldSymbol(tree.pos, name, analyzeType(typ))) + ownerClass.enterField(FieldSymbol(tree.pos, name.name, analyzeType(typ))) case MethodDef(name, args, rtype, expr) => - lookupMethod(name) match { - case Some => - var paramtypes = for ( val Pair(x,y) <- args ) yield analyzeType(y); - ownerClass.enterMethod(MethodSymbol(tree.pos, name, paramtypes, analyzeType(rtype))) + ownerClass.lookupMethod(name.name) match { + case Some(z) => + var paramtypes = for ( val Formal(x,y) <- args ) yield analyzeType(y); + ownerClass.enterMethod(MethodSymbol(tree.pos, name.name, paramtypes, analyzeType(rtype))) } } @@ -62,14 +62,15 @@ checkIntType(cond.pos, analyzeExpr(varScope, cond)); stats.foldLeft(varScope)(analyzeStat); varScope + case Var(name, typ, expr) => - varScope.get(name) match { + varScope.get(name.name) match { case Some(v) => Report.error(tree.pos, "Variable already defined " + name.name); case None => - val mv = VarSymbol(tree.pos, name, typ) - val et = analyzeExpr(varScope, expr) - varScope = varScope + name -> VarSymbol() + val mv = VarSymbol(tree.pos, name.name, typ); + val et = analyzeExpr(varScope, expr); + varScope = varScope + name -> VarSymbol(); } varScope @@ -118,7 +119,7 @@ name.sym = v; v.vartype case None => - Report.error(tree.pos, "Unknown variable " + name);K + Report.error(tree.pos, "Unknown variable " + name); IBadType }