222 lines
23 KiB
Text
222 lines
23 KiB
Text
warning: unused variable: `size`
|
|
--> src/c_ir.rs:54:38
|
|
|
|
|
54 | CType::FixedArray(inner, size) => format!("{}*", inner.to_string()), // For now, treat as pointer in type strings
|
|
| ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
|
|
|
|
|
= note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
|
|
|
|
warning: unused variable: `e`
|
|
--> src/codegen/transpiler.rs:284:38
|
|
|
|
|
284 | TypedASTNodeKind::Extern(e) => {
|
|
| ^ help: if this is intentional, prefix it with an underscore: `_e`
|
|
|
|
warning: unused variable: `typed_trait`
|
|
--> src/codegen/transpiler.rs:289:37
|
|
|
|
|
289 | TypedASTNodeKind::Trait(typed_trait) => {}
|
|
| ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_trait`
|
|
|
|
warning: unreachable pattern
|
|
--> src/codegen/transpiler.rs:679:22
|
|
|
|
|
667 | "enable_msaa_4x" => "suic_enable_msaa_4x",
|
|
| ---------------- matches all the relevant values
|
|
...
|
|
679 | "enable_msaa_4x" => "suic_enable_msaa_4x",
|
|
| ^^^^^^^^^^^^^^^^ no value can reach this
|
|
|
|
|
= note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
|
|
|
|
warning: unused variable: `c`
|
|
--> src/monomorphize.rs:107:41
|
|
|
|
|
107 | TypedASTNodeKind::Const(c) => {
|
|
| ^ help: if this is intentional, prefix it with an underscore: `_c`
|
|
|
|
warning: unused variable: `c`
|
|
--> src/monomorphize.rs:994:33
|
|
|
|
|
994 | TypedASTNodeKind::Const(c) => {
|
|
| ^ help: if this is intentional, prefix it with an underscore: `_c`
|
|
|
|
warning: unused variable: `path`
|
|
--> src/typechecker.rs:2638:30
|
|
|
|
|
2638 | ASTNodeKind::Use(path) => Type::Unit,
|
|
| ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
|
|
|
|
warning: unused variable: `is_ptr`
|
|
--> src/typechecker.rs:3169:28
|
|
|
|
|
3169 | let (name, is_ptr) = match &typed_obj.ty {
|
|
| ^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_ptr`
|
|
|
|
warning: field `type_map` is never read
|
|
--> src/c_lowerer/declaration_transpiler.rs:7:5
|
|
|
|
|
6 | pub struct DeclarationTranspiler {
|
|
| --------------------- field in this struct
|
|
7 | type_map: HashMap<String, Type>,
|
|
| ^^^^^^^^
|
|
|
|
|
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
|
|
|
|
warning: associated items `register_array_type`, `get_array_struct_name`, and `generate_heap_alloc` are never used
|
|
--> src/codegen/transpiler.rs:63:8
|
|
|
|
|
48 | impl Transpiler {
|
|
| --------------- associated items in this implementation
|
|
...
|
|
63 | fn register_array_type(&mut self, elem_type: &CType) {
|
|
| ^^^^^^^^^^^^^^^^^^^
|
|
...
|
|
332 | fn get_array_struct_name(elem_type: &CType) -> String {
|
|
| ^^^^^^^^^^^^^^^^^^^^^
|
|
...
|
|
482 | fn generate_heap_alloc(&self, ty: &CType) -> String {
|
|
| ^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: field `type_params` is never read
|
|
--> src/typechecker.rs:198:5
|
|
|
|
|
197 | struct FunctionType {
|
|
| ------------ field in this struct
|
|
198 | type_params: Vec<String>,
|
|
| ^^^^^^^^^^^
|
|
|
|
|
= note: `FunctionType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
|
|
|
|
warning: fields `methods` and `parameters` are never read
|
|
--> src/typechecker.rs:205:5
|
|
|
|
|
204 | struct TraitInfo {
|
|
| --------- fields in this struct
|
|
205 | methods: HashMap<String, FunctionType>,
|
|
| ^^^^^^^
|
|
206 | parameters: Vec<String>,
|
|
| ^^^^^^^^^^
|
|
|
|
|
= note: `TraitInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
|
|
|
|
warning: field `trait_name` is never read
|
|
--> src/typechecker.rs:212:5
|
|
|
|
|
210 | struct ImplInfo {
|
|
| -------- field in this struct
|
|
211 | target: String,
|
|
212 | trait_name: Option<String>,
|
|
| ^^^^^^^^^^
|
|
|
|
|
= note: `ImplInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
|
|
|
|
warning: method `get_var` is never used
|
|
--> src/typechecker.rs:294:8
|
|
|
|
|
216 | impl TypeEnv {
|
|
| ------------ method in this implementation
|
|
...
|
|
294 | fn get_var(&self, id: &crate::ast::BindingId) -> Option<&VarInfo> {
|
|
| ^^^^^^^
|
|
|
|
warning: `suicmez` (lib) generated 14 warnings
|
|
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.05s
|
|
Running `target/debug/suicmez game/client.sui`
|
|
Type checking file: game/client.sui
|
|
|
|
=== Import Resolution Phase ===
|
|
Starting import resolution...
|
|
[parsing] game/client.sui
|
|
Import resolution complete! 41 total nodes loaded
|
|
Lambda lowering passed! 41 nodes after lowering.
|
|
Type checking passed! 41 nodes typechecked.
|
|
|
|
Typed AST nodes before monomorphization:
|
|
[0] Struct(SuicVec3) with 0 params
|
|
[1] Struct(SuicColor) with 0 params
|
|
[2] Struct(SuicDirectionalLight) with 0 params
|
|
[3] Const(PISTOL_FIRE_RATE)
|
|
[4] Const(RIFLE_FIRE_RATE)
|
|
[5] Const(RECOIL_RETURN)
|
|
[6] Const(CROSS_RETURN)
|
|
[7] Const(PISTOL_KICK_PITCH)
|
|
[8] Const(PISTOL_KICK_YAW)
|
|
[9] Const(RIFLE_KICK_PITCH)
|
|
[10] Const(RIFLE_KICK_YAW)
|
|
[11] Const(PISTOL_CROSS_KICK)
|
|
[12] Const(RIFLE_CROSS_KICK)
|
|
[13] Const(PISTOL_SPRAY_GROW)
|
|
[14] Const(RIFLE_SPRAY_GROW)
|
|
[15] Const(BURST_RESET_TIME)
|
|
[16] Const(SUIC_BTN_RELOAD)
|
|
[17] Const(SUIC_BTN_SWITCH_PISTOL)
|
|
[18] Const(SUIC_BTN_SWITCH_RIFLE)
|
|
[19] Const(SUIC_BTN_PICK)
|
|
[20] Const(SUIC_BTN_USE_MEDKIT)
|
|
[21] Const(SUIC_BTN_JUMP)
|
|
[22] Const(SUIC_WEAPON_PISTOL)
|
|
[23] Const(SUIC_WEAPON_RIFLE)
|
|
[24] Const(SUIC_ITEM_MEDKIT)
|
|
[25] Const(SUIC_ITEM_AMMO_PISTOL)
|
|
[26] Const(SUIC_ITEM_AMMO_RIFLE)
|
|
[27] Const(SUIC_TERRAIN_SIZE)
|
|
[28] Const(SUIC_TERRAIN_SCALE)
|
|
[29] Const(SUIC_TERRAIN_MIN)
|
|
[30] Const(SUIC_TERRAIN_MAX)
|
|
[31] Const(SUIC_NET_MAX_PLAYERS)
|
|
[32] Const(SUIC_NET_USERNAME_MAX)
|
|
[33] Const(SUIC_NET_MAX_ITEMS)
|
|
[34] Struct(GameState) with 0 params
|
|
[35] Function(suic_game_init)
|
|
[36] Function(suic_game_shutdown)
|
|
[37] Function(suic_game_handle_input)
|
|
[38] Function(suic_game_update)
|
|
[39] Function(suic_game_render)
|
|
[40] Function(main)
|
|
Monomorphization passed! 41 nodes after specialization.
|
|
|
|
Monomorphized AST nodes:
|
|
[0] Struct(SuicVec3) with 0 params
|
|
[1] Struct(SuicColor) with 0 params
|
|
[2] Struct(SuicDirectionalLight) with 0 params
|
|
[3] Const(PISTOL_FIRE_RATE)
|
|
[4] Const(RIFLE_FIRE_RATE)
|
|
[5] Const(RECOIL_RETURN)
|
|
[6] Const(CROSS_RETURN)
|
|
[7] Const(PISTOL_KICK_PITCH)
|
|
[8] Const(PISTOL_KICK_YAW)
|
|
[9] Const(RIFLE_KICK_PITCH)
|
|
[10] Const(RIFLE_KICK_YAW)
|
|
[11] Const(PISTOL_CROSS_KICK)
|
|
[12] Const(RIFLE_CROSS_KICK)
|
|
[13] Const(PISTOL_SPRAY_GROW)
|
|
[14] Const(RIFLE_SPRAY_GROW)
|
|
[15] Const(BURST_RESET_TIME)
|
|
[16] Const(SUIC_BTN_RELOAD)
|
|
[17] Const(SUIC_BTN_SWITCH_PISTOL)
|
|
[18] Const(SUIC_BTN_SWITCH_RIFLE)
|
|
[19] Const(SUIC_BTN_PICK)
|
|
[20] Const(SUIC_BTN_USE_MEDKIT)
|
|
[21] Const(SUIC_BTN_JUMP)
|
|
[22] Const(SUIC_WEAPON_PISTOL)
|
|
[23] Const(SUIC_WEAPON_RIFLE)
|
|
[24] Const(SUIC_ITEM_MEDKIT)
|
|
[25] Const(SUIC_ITEM_AMMO_PISTOL)
|
|
[26] Const(SUIC_ITEM_AMMO_RIFLE)
|
|
[27] Const(SUIC_TERRAIN_SIZE)
|
|
[28] Const(SUIC_TERRAIN_SCALE)
|
|
[29] Const(SUIC_TERRAIN_MIN)
|
|
[30] Const(SUIC_TERRAIN_MAX)
|
|
[31] Const(SUIC_NET_MAX_PLAYERS)
|
|
[32] Const(SUIC_NET_USERNAME_MAX)
|
|
[33] Const(SUIC_NET_MAX_ITEMS)
|
|
[34] Struct(GameState) with 0 params
|
|
[35] Function(suic_game_init)
|
|
[36] Function(suic_game_shutdown)
|
|
[37] Function(suic_game_handle_input)
|
|
[38] Function(suic_game_update)
|
|
[39] Function(suic_game_render)
|
|
[40] Function(main)
|
|
Type variable check passed! No type variables remain in AST.
|
|
Error: Code generation error: Unsupported expression: Do([TypedExpr { kind: Let(BindingId(48), "wpn", Default, None, TypedExpr { kind: Call(TypedExpr { kind: Variable("suic_net_player_weapon"), span: Span { start: 5043, end: 5066, file: "game/client.sui" }, attributes: [], ty: Function([Int], Int) }, [TypedExpr { kind: Variable("my_id"), span: Span { start: 5066, end: 5072, file: "game/client.sui" }, attributes: [], ty: Int }]), span: Span { start: 5043, end: 5084, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5033, end: 5084, file: "game/client.sui" }, attributes: [], ty: Int }, TypedExpr { kind: Let(BindingId(49), "rate", Mutable, None, TypedExpr { kind: Variable("RIFLE_FIRE_RATE"), span: Span { start: 5096, end: 5122, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5081, end: 5122, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: If(TypedExpr { kind: BinOp(TypedExpr { kind: Variable("wpn"), span: Span { start: 5123, end: 5129, file: "game/client.sui" }, attributes: [], ty: Int }, Eq, TypedExpr { kind: Variable("SUIC_WEAPON_PISTOL"), span: Span { start: 5130, end: 5151, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5123, end: 5151, file: "game/client.sui" }, attributes: [], ty: Bool }, TypedExpr { kind: Do([TypedExpr { kind: Assign(TypedExpr { kind: Variable("rate"), span: Span { start: 5164, end: 5170, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: Variable("PISTOL_FIRE_RATE"), span: Span { start: 5171, end: 5199, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5164, end: 5199, file: "game/client.sui" }, attributes: [], ty: Unit }]), span: Span { start: 5149, end: 5218, file: "game/client.sui" }, attributes: [], ty: Unit }, None), span: Span { start: 5120, end: 5218, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5208, end: 5219, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "fire_cooldown"), span: Span { start: 5208, end: 5234, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: BinOp(TypedExpr { kind: Float(1.0), span: Span { start: 5235, end: 5240, file: "game/client.sui" }, attributes: [], ty: Float }, Div, TypedExpr { kind: Variable("rate"), span: Span { start: 5241, end: 5265, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5235, end: 5265, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5208, end: 5265, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5255, end: 5266, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "shots_in_burst"), span: Span { start: 5255, end: 5282, file: "game/client.sui" }, attributes: [], ty: Int }, TypedExpr { kind: BinOp(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5283, end: 5294, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "shots_in_burst"), span: Span { start: 5283, end: 5310, file: "game/client.sui" }, attributes: [], ty: Int }, Add, TypedExpr { kind: Int(1), span: Span { start: 5311, end: 5331, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5283, end: 5331, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5255, end: 5331, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5321, end: 5332, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "burst_reset_timer"), span: Span { start: 5321, end: 5351, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: Variable("BURST_RESET_TIME"), span: Span { start: 5352, end: 5380, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5321, end: 5380, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: If(TypedExpr { kind: BinOp(TypedExpr { kind: Variable("wpn"), span: Span { start: 5381, end: 5387, file: "game/client.sui" }, attributes: [], ty: Int }, Eq, TypedExpr { kind: Variable("SUIC_WEAPON_PISTOL"), span: Span { start: 5388, end: 5409, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5381, end: 5409, file: "game/client.sui" }, attributes: [], ty: Bool }, TypedExpr { kind: Do([TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5422, end: 5433, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_pitch"), span: Span { start: 5422, end: 5447, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: BinOp(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5448, end: 5459, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_pitch"), span: Span { start: 5448, end: 5473, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: Variable("PISTOL_KICK_PITCH"), span: Span { start: 5474, end: 5514, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5448, end: 5514, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5422, end: 5514, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5504, end: 5515, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_yaw"), span: Span { start: 5504, end: 5527, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: BinOp(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5528, end: 5539, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_yaw"), span: Span { start: 5528, end: 5551, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: BinOp(TypedExpr { kind: BinOp(TypedExpr { kind: Cast(TypedExpr { kind: Call(TypedExpr { kind: Variable("get_random_value"), span: Span { start: 5553, end: 5570, file: "game/client.sui" }, attributes: [], ty: Function([Int, Int], Int) }, [TypedExpr { kind: UnOp(Neg, TypedExpr { kind: Int(1000), span: Span { start: 5571, end: 5576, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5570, end: 5576, file: "game/client.sui" }, attributes: [], ty: Int }, TypedExpr { kind: Int(1000), span: Span { start: 5577, end: 5582, file: "game/client.sui" }, attributes: [], ty: Int }]), span: Span { start: 5553, end: 5585, file: "game/client.sui" }, attributes: [], ty: Int }, Cons("float", [])), span: Span { start: 5553, end: 5593, file: "game/client.sui" }, attributes: [], ty: Float }, Div, TypedExpr { kind: Float(1000.0), span: Span { start: 5594, end: 5601, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5552, end: 5603, file: "game/client.sui" }, attributes: [], ty: Float }, Mul, TypedExpr { kind: Variable("PISTOL_KICK_YAW"), span: Span { start: 5604, end: 5642, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5552, end: 5642, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5528, end: 5642, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5504, end: 5642, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5632, end: 5643, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "cross_spread"), span: Span { start: 5632, end: 5657, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: BinOp(TypedExpr { kind: BinOp(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5658, end: 5669, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "cross_spread"), span: Span { start: 5658, end: 5683, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: Variable("PISTOL_CROSS_KICK"), span: Span { start: 5684, end: 5703, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5658, end: 5703, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: BinOp(TypedExpr { kind: Cast(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5704, end: 5715, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "shots_in_burst"), span: Span { start: 5704, end: 5732, file: "game/client.sui" }, attributes: [], ty: Int }, Cons("float", [])), span: Span { start: 5704, end: 5740, file: "game/client.sui" }, attributes: [], ty: Float }, Mul, TypedExpr { kind: Variable("PISTOL_SPRAY_GROW"), span: Span { start: 5741, end: 5770, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5704, end: 5770, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5658, end: 5770, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5632, end: 5770, file: "game/client.sui" }, attributes: [], ty: Unit }]), span: Span { start: 5407, end: 5781, file: "game/client.sui" }, attributes: [], ty: Unit }, None), span: Span { start: 5378, end: 5781, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: If(TypedExpr { kind: BinOp(TypedExpr { kind: Variable("wpn"), span: Span { start: 5782, end: 5788, file: "game/client.sui" }, attributes: [], ty: Int }, Eq, TypedExpr { kind: Variable("SUIC_WEAPON_RIFLE"), span: Span { start: 5789, end: 5809, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5782, end: 5809, file: "game/client.sui" }, attributes: [], ty: Bool }, TypedExpr { kind: Do([TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5822, end: 5833, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_pitch"), span: Span { start: 5822, end: 5847, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: BinOp(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5848, end: 5859, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_pitch"), span: Span { start: 5848, end: 5873, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: Variable("RIFLE_KICK_PITCH"), span: Span { start: 5874, end: 5913, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5848, end: 5913, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5822, end: 5913, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5903, end: 5914, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_yaw"), span: Span { start: 5903, end: 5926, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: BinOp(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 5927, end: 5938, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "recoil_yaw"), span: Span { start: 5927, end: 5950, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: BinOp(TypedExpr { kind: BinOp(TypedExpr { kind: Cast(TypedExpr { kind: Call(TypedExpr { kind: Variable("get_random_value"), span: Span { start: 5952, end: 5969, file: "game/client.sui" }, attributes: [], ty: Function([Int, Int], Int) }, [TypedExpr { kind: UnOp(Neg, TypedExpr { kind: Int(1000), span: Span { start: 5970, end: 5975, file: "game/client.sui" }, attributes: [], ty: Int }), span: Span { start: 5969, end: 5975, file: "game/client.sui" }, attributes: [], ty: Int }, TypedExpr { kind: Int(1000), span: Span { start: 5976, end: 5981, file: "game/client.sui" }, attributes: [], ty: Int }]), span: Span { start: 5952, end: 5984, file: "game/client.sui" }, attributes: [], ty: Int }, Cons("float", [])), span: Span { start: 5952, end: 5992, file: "game/client.sui" }, attributes: [], ty: Float }, Div, TypedExpr { kind: Float(1000.0), span: Span { start: 5993, end: 6000, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5951, end: 6002, file: "game/client.sui" }, attributes: [], ty: Float }, Mul, TypedExpr { kind: Variable("RIFLE_KICK_YAW"), span: Span { start: 6003, end: 6040, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5951, end: 6040, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5927, end: 6040, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 5903, end: 6040, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Assign(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 6030, end: 6041, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "cross_spread"), span: Span { start: 6030, end: 6055, file: "game/client.sui" }, attributes: [], ty: Float }, TypedExpr { kind: BinOp(TypedExpr { kind: BinOp(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 6056, end: 6067, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "cross_spread"), span: Span { start: 6056, end: 6081, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: Variable("RIFLE_CROSS_KICK"), span: Span { start: 6082, end: 6100, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 6056, end: 6100, file: "game/client.sui" }, attributes: [], ty: Float }, Add, TypedExpr { kind: BinOp(TypedExpr { kind: Cast(TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 6101, end: 6112, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "shots_in_burst"), span: Span { start: 6101, end: 6129, file: "game/client.sui" }, attributes: [], ty: Int }, Cons("float", [])), span: Span { start: 6101, end: 6137, file: "game/client.sui" }, attributes: [], ty: Float }, Mul, TypedExpr { kind: Variable("RIFLE_SPRAY_GROW"), span: Span { start: 6138, end: 6166, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 6101, end: 6166, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 6056, end: 6166, file: "game/client.sui" }, attributes: [], ty: Float }), span: Span { start: 6030, end: 6166, file: "game/client.sui" }, attributes: [], ty: Unit }]), span: Span { start: 5807, end: 6195, file: "game/client.sui" }, attributes: [], ty: Unit }, None), span: Span { start: 5779, end: 6195, file: "game/client.sui" }, attributes: [], ty: Unit }, TypedExpr { kind: Call(TypedExpr { kind: Variable("suic_net_send_shoot"), span: Span { start: 6176, end: 6196, file: "game/client.sui" }, attributes: [], ty: Function([Int, Int], Unit) }, [TypedExpr { kind: Variable("my_id"), span: Span { start: 6196, end: 6202, file: "game/client.sui" }, attributes: [], ty: Int }, TypedExpr { kind: Dot(TypedExpr { kind: Variable("game_state"), span: Span { start: 6203, end: 6214, file: "game/client.sui" }, attributes: [], ty: Ptr(Struct("GameState", [])) }, "client_tick"), span: Span { start: 6203, end: 6226, file: "game/client.sui" }, attributes: [], ty: Int }]), span: Span { start: 6176, end: 6234, file: "game/client.sui" }, attributes: [], ty: Unit }])
|