return null;
}
case Type.CLASS:
{
ClassType clazz = (ClassType)type;
if (hasMoreSymbols()) {
symbol = consumeSymbol();
type = clazz.lookupDeclaration(symbol);
break;
}
if (!hasArgs()) {
listener.error(_location, "Syntax error: argument list expected after '"+_name.toString(1)+"'");
return null;
}
CompilableFunction constructor = clazz.getConstructor();
if (constructor == null) {
listener.error(_location, "Class '" + clazz + "' does not have constructor");
return null;
}
ClassType context = _statement.getClassStatement();
checkArguments(listener, constructor);
Grammar.checkInstanceAccess(listener, _location, _statement, clazz);
//Grammar.checkInstanceAmbiguity(listener, _location, context, clazz);
return new NewNode(context, clazz, constructor, consumeArgs());
}