| author | |
| committer | |
| log | 535d4195907de8a7e494b0480c394634d4c6034a |
| tree | f2e1043578df233191c860212d88222e33019ff2 |
| parent | 712274997e80a93bdfe204f2238c4cfaac72a5b8 |
| signature | Commit is signed but in an unrecognized format. |
See #19643 files changed, 27 insertions(+), 2 deletions(-)
src-self-hosted/clang.zig+8| ... | ... | @@ -959,3 +959,11 @@ pub const Stage2ErrorMsg = extern struct { |
| 959 | 959 | offset: c_uint, |
| 960 | 960 | }; |
| 961 | 961 | pub extern fn ZigClangErrorMsg_delete(ptr: [*c]Stage2ErrorMsg, len: usize) void; |
| 962 | ||
| 963 | pub extern fn ZigClangLoadFromCommandLine( | |
| 964 | args_begin: [*]?[*]const u8, | |
| 965 | args_end: [*]?[*]const u8, | |
| 966 | errors_ptr: *[*]Stage2ErrorMsg, | |
| 967 | errors_len: *usize, | |
| 968 | resources_path: [*c]const u8, | |
| 969 | ) ?*ZigClangASTUnit; |
src-self-hosted/stage1.zig+7-2| ... | ... | @@ -88,10 +88,15 @@ export fn stage2_translate_c( |
| 88 | 88 | out_ast.* = translate_c.translate(args_begin, args_end, switch (mode) { |
| 89 | 89 | .import => translate_c.Mode.import, |
| 90 | 90 | .translate => translate_c.Mode.translate, |
| 91 | }, &errors) catch |err| switch (err) { | |
| 91 | }, &errors, resources_path) catch |err| switch (err) { | |
| 92 | 92 | error.Unimplemented => return Error.Unimplemented, |
| 93 | error.SemanticAnalyzeFail => { | |
| 94 | out_errors_ptr.* = errors.ptr; | |
| 95 | out_errors_len.* = errors.len; | |
| 96 | return Error.CCompileErrors; | |
| 97 | }, | |
| 98 | error.OutOfMemory => return Error.OutOfMemory, | |
| 93 | 99 | }; |
| 94 | ||
| 95 | 100 | return Error.None; |
| 96 | 101 | } |
| 97 | 102 |
src-self-hosted/translate_c.zig+12| ... | ... | @@ -17,7 +17,19 @@ pub fn translate( |
| 17 | 17 | args_end: [*]?[*]const u8, |
| 18 | 18 | mode: Mode, |
| 19 | 19 | errors: *[]ClangErrMsg, |
| 20 | resources_path: [*]const u8, | |
| 20 | 21 | ) !*ast.Tree { |
| 22 | const ast_unit = ZigClangLoadFromCommandLine( | |
| 23 | args_begin, | |
| 24 | args_end, | |
| 25 | &errors.ptr, | |
| 26 | &errors.len, | |
| 27 | resources_path, | |
| 28 | ) orelse { | |
| 29 | if (errors.len == 0) return error.OutOfMemory; | |
| 30 | return error.SemanticAnalyzeFail; | |
| 31 | }; | |
| 32 | ||
| 21 | 33 | return error.Unimplemented; |
| 22 | 34 | } |
| 23 | 35 |