public object visitReturnStatement(Statement.Return returnStmt) { Object value = null; if (returnStmt.value != null) { value = evaluate(returnStmt.value); } throw new Exceptions.Return(value); }
public object visitReturnStatement(Statement.Return returnStmt) { if (currentFunction == FunctionType.NONE) { Lox.error(returnStmt.keyword, "Can't return from top-level code."); } if (returnStmt.value != null) { if (currentFunction == FunctionType.INITIALIZER) { Lox.error(returnStmt.keyword, "Can't return a value from an initializer."); } resolve(returnStmt.value); } returned = true; return(null); }