File tree 3 files changed +27
-2
lines changed
3 files changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -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 ;
Original file line number Diff line number Diff line change @@ -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
Original file line number Diff line number Diff line change @@ -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
You can’t perform that action at this time.
0 commit comments