diff --git a/src/Checker.cc b/src/Checker.cc index 8c9e71316..83d96d3f5 100644 --- a/src/Checker.cc +++ b/src/Checker.cc @@ -713,13 +713,17 @@ void Checker::run(SourceFile* SF) { TypeEnv Env; auto A = createTVar(); auto B = createTVar(); - Env.add("Int", getIntType(), SymbolKind::Type); - Env.add("Bool", getBoolType(), SymbolKind::Type); - Env.add("String", getStringType(), SymbolKind::Type); - Env.add("True", getBoolType(), SymbolKind::Var); - Env.add("False", getBoolType(), SymbolKind::Var); - Env.add("+", new TFun(getIntType(), new TFun(getIntType(), getIntType())), SymbolKind::Var); - Env.add("-", new TFun(getIntType(), new TFun(getIntType(), getIntType())), SymbolKind::Var); + auto Bool = getBoolType(); + auto Int = getIntType(); + auto String = getStringType(); + Env.add("Int", Int, SymbolKind::Type); + Env.add("Bool", Bool, SymbolKind::Type); + Env.add("String", String, SymbolKind::Type); + Env.add("True", Bool, SymbolKind::Var); + Env.add("False", Bool, SymbolKind::Var); + Env.add("not", new TFun(Bool, Bool), SymbolKind::Var); + Env.add("+", new TFun(Int, new TFun(Int, Int)), SymbolKind::Var); + Env.add("-", new TFun(Int, new TFun(Int, Int)), SymbolKind::Var); Env.add("$", new TypeScheme({ A, B }, new TFun(new TFun(A, B), new TFun(A, B))), SymbolKind::Var); auto Out = inferSourceFile(Env, SF); solve(Out);