Add #line directives for source code mapping
This commit is contained in:
parent
b3e0f11644
commit
1af5ab6d4e
@ -19,13 +19,18 @@ CORD compile_type(env_t *env, type_ast_t *t)
|
||||
|
||||
CORD compile_statement(env_t *env, ast_t *ast)
|
||||
{
|
||||
CORD stmt;
|
||||
switch (ast->tag) {
|
||||
case If: case For: case While: case FunctionDef: case Return: case StructDef: case EnumDef:
|
||||
case Declare: case Assign: case UpdateAssign: case DocTest:
|
||||
return compile(env, ast);
|
||||
stmt = compile(env, ast);
|
||||
break;
|
||||
default:
|
||||
return CORD_asprintf("(void)%r;", compile(env, ast));
|
||||
stmt = CORD_asprintf("(void)%r;", compile(env, ast));
|
||||
break;
|
||||
}
|
||||
int64_t line = get_line_number(ast->file, ast->start);
|
||||
return stmt ? CORD_asprintf("#line %ld\n%r", line, stmt) : stmt;
|
||||
}
|
||||
|
||||
CORD compile(env_t *env, ast_t *ast)
|
||||
|
@ -55,6 +55,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
CORD program = CORD_asprintf(
|
||||
"#line 0 \"%s\"\n" // file
|
||||
"// Generated code:\n"
|
||||
"%r\n" // imports
|
||||
"%r\n" // typedefs
|
||||
@ -74,6 +75,7 @@ int main(int argc, char *argv[])
|
||||
"__load();\n"
|
||||
"return 0;\n"
|
||||
"}\n",
|
||||
f->filename,
|
||||
env.imports, env.typedefs, env.types, env.staticdefs,
|
||||
env.funcs, env.main);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user