Else if and empty if
All checks were successful
CI / ci (ReleaseFast, ubuntu-latest) (pull_request) Successful in 2m3s
CI / ci (ReleaseSmall, ubuntu-latest) (pull_request) Successful in 2m3s
CI / ci (ReleaseSafe, ubuntu-latest) (pull_request) Successful in 2m12s
CI / ci (Debug, ubuntu-latest) (pull_request) Successful in 3m13s
CI / ci (ReleaseFast, ubuntu-latest) (push) Successful in 2m3s
CI / ci (ReleaseSmall, ubuntu-latest) (push) Successful in 2m2s
CI / ci (ReleaseSafe, ubuntu-latest) (push) Successful in 2m7s
CI / ci (Debug, ubuntu-latest) (push) Successful in 3m10s
All checks were successful
CI / ci (ReleaseFast, ubuntu-latest) (pull_request) Successful in 2m3s
CI / ci (ReleaseSmall, ubuntu-latest) (pull_request) Successful in 2m3s
CI / ci (ReleaseSafe, ubuntu-latest) (pull_request) Successful in 2m12s
CI / ci (Debug, ubuntu-latest) (pull_request) Successful in 3m13s
CI / ci (ReleaseFast, ubuntu-latest) (push) Successful in 2m3s
CI / ci (ReleaseSmall, ubuntu-latest) (push) Successful in 2m2s
CI / ci (ReleaseSafe, ubuntu-latest) (push) Successful in 2m7s
CI / ci (Debug, ubuntu-latest) (push) Successful in 3m10s
This commit is contained in:
parent
d2e488edb1
commit
4dedaf3006
1363
src/bootstrap.zig
1363
src/bootstrap.zig
File diff suppressed because it is too large
Load Diff
@ -231,6 +231,18 @@ CompilerCommand = enum
|
||||
test,
|
||||
}
|
||||
|
||||
BuildMode = enum
|
||||
{
|
||||
debug_none,
|
||||
debug_fast,
|
||||
debug_size,
|
||||
soft_optimize,
|
||||
optimize_for_speed,
|
||||
optimize_for_size,
|
||||
aggressively_optimize_for_speed,
|
||||
aggressively_optimize_for_size,
|
||||
}
|
||||
|
||||
[export] main = fn [cc(c)] (argument_count: u32, argv: &&u8) s32
|
||||
{
|
||||
global_state_initialize();
|
||||
@ -242,7 +254,7 @@ CompilerCommand = enum
|
||||
|
||||
>command_string = c_string_to_slice(argv[1]);
|
||||
|
||||
> command_string_to_enum = #string_to_enum(CompilerCommand, command_string);
|
||||
>command_string_to_enum = #string_to_enum(CompilerCommand, command_string);
|
||||
if (!command_string_to_enum.is_valid)
|
||||
{
|
||||
return 1;
|
||||
@ -253,6 +265,41 @@ CompilerCommand = enum
|
||||
{
|
||||
.compile =>
|
||||
{
|
||||
if (argument_count < 3)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
>build_mode: BuildMode = .debug_none;
|
||||
>has_debug_info: u1 = 1;
|
||||
|
||||
if (argument_count >= 4)
|
||||
{
|
||||
>build_mode_string_to_enum = #string_to_enum(BuildMode, c_string_to_slice(argv[3]));
|
||||
if (!build_mode_string_to_enum.is_valid)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
build_mode = build_mode_string_to_enum.enum_value;
|
||||
}
|
||||
|
||||
if (argument_count >= 5)
|
||||
{
|
||||
>has_debug_info_string = c_string_to_slice(argv[4]);
|
||||
if (string_equal(has_debug_info_string, "true"))
|
||||
{
|
||||
has_debug_info = 1;
|
||||
}
|
||||
else if (string_equal(has_debug_info_string, "false"))
|
||||
{
|
||||
has_debug_info = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
>relative_file_path_pointer = argv[2];
|
||||
if (!relative_file_path_pointer)
|
||||
{
|
||||
|
@ -311,4 +311,7 @@ const names = &[_][]const u8{
|
||||
"c_abi",
|
||||
"string_to_enum",
|
||||
"abi_enum_bool",
|
||||
"empty_if",
|
||||
"else_if",
|
||||
"else_if_complicated",
|
||||
};
|
||||
|
16
tests/else_if.bbb
Normal file
16
tests/else_if.bbb
Normal file
@ -0,0 +1,16 @@
|
||||
[export] main = fn [cc(c)] () s32
|
||||
{
|
||||
>result: s32 = 0;
|
||||
if (result == 1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else if (result == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
}
|
37
tests/else_if_complicated.bbb
Normal file
37
tests/else_if_complicated.bbb
Normal file
@ -0,0 +1,37 @@
|
||||
Foo = enum
|
||||
{
|
||||
a,b,c,
|
||||
}
|
||||
|
||||
[export] main = fn [cc(c)] (argument_count: u32) s32
|
||||
{
|
||||
>result: s32 = 0;
|
||||
>foo: Foo = .b;
|
||||
switch (foo)
|
||||
{
|
||||
.b =>
|
||||
{
|
||||
if (argument_count != 0)
|
||||
{
|
||||
>a: s32 = 1;
|
||||
if (result == 1)
|
||||
{
|
||||
}
|
||||
else if (result == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
return a;
|
||||
}
|
||||
},
|
||||
else =>
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
12
tests/empty_if.bbb
Normal file
12
tests/empty_if.bbb
Normal file
@ -0,0 +1,12 @@
|
||||
[export] main = fn [cc(c)] (argument_count: u32) s32
|
||||
{
|
||||
>result: s32 = 0;
|
||||
if (argument_count != 1)
|
||||
{
|
||||
result = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
return result;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user