Init globals before lowering CTCE, allows CTCE to use imported functions, etc.
This commit is contained in:
25
kraken.krak
25
kraken.krak
@@ -35,6 +35,13 @@ fun main(argc: int, argv: **char):int {
|
||||
doing_repl = true
|
||||
} else if (string(argv[1]) == "-v" || string(argv[1]) == "--version") {
|
||||
println(compiler_version::version_string)
|
||||
/*var version_c_string = #ctce(fun(): *char {*/
|
||||
/*var version_string = string("Self-hosted Kraken compiler \"Kalypso\" - revision ") + from_system_command(string("git rev-list HEAD | wc -l"), 100) +*/
|
||||
/*", commit: " + from_system_command(string("git rev-parse HEAD"), 100) +*/
|
||||
/*", compile date: " + from_system_command(string("date"), 100) */
|
||||
/*return version_string.toCharArray()*/
|
||||
/*}())*/
|
||||
/*println(version_c_string)*/
|
||||
exit(0)
|
||||
}
|
||||
var input_file_offset = 1
|
||||
@@ -100,13 +107,17 @@ fun main(argc: int, argv: **char):int {
|
||||
|
||||
// This is our REPL loop
|
||||
var scope = ast_translation_unit_ptr(string("stdin"))
|
||||
while (doing_repl) {
|
||||
var line = get_line(string("> "), 100)
|
||||
if (line == "end")
|
||||
return 0
|
||||
var trimmed_parse = trim(parse1.parse_input(line, string("stdin")))
|
||||
var ast_expression = ast_pass.transform_expression(trimmed_parse, scope, map<string, *type>())
|
||||
print_value(evaluate_constant_expression(ast_expression))
|
||||
if (doing_repl) {
|
||||
/*var globals = setup_globals(importer.name_ast_map)*/
|
||||
while (doing_repl) {
|
||||
var line = get_line(string("> "), 100)
|
||||
if (line == "end")
|
||||
return 0
|
||||
var trimmed_parse = trim(parse1.parse_input(line, string("stdin")))
|
||||
var ast_expression = ast_pass.transform_expression(trimmed_parse, scope, map<string, *type>())
|
||||
print_value(evaluate_constant_expression(ast_expression))
|
||||
/*print_value(evaluate_with_globals(ast_expression, &globals))*/
|
||||
}
|
||||
}
|
||||
|
||||
var kraken_file_name = string(argv[input_file_offset])
|
||||
|
||||
Reference in New Issue
Block a user