@@ -65,42 +65,58 @@ pub fn runSingleFileAnalysis(allocator: std.mem.Allocator, path: []const u8, con
6565 // ── Rust ──────────────────────────────────────────
6666 // Rust v0 mangling (_R...) — unambiguous
6767 if (name .len > 2 and name [0 ] == '_' and name [1 ] == 'R' ) {
68- if (source_lang .language != .rust ) { has_multi_lang_hint = true ; break ; }
68+ if (source_lang .language != .rust ) {
69+ has_multi_lang_hint = true ;
70+ break ;
71+ }
6972 }
7073 // Rust/C++ _ZN mangling (disambiguate via isRustMangledName)
7174 if (name .len > 3 and name [0 ] == '_' and name [1 ] == 'Z' and name [2 ] == 'N' ) {
7275 if (source_lang .language != .rust and source_lang .language != .cpp ) {
73- has_multi_lang_hint = true ; break ;
76+ has_multi_lang_hint = true ;
77+ break ;
7478 }
7579 }
7680 // C++ _Z (non-_ZN) mangling — unambiguous C++
7781 if (name .len > 2 and name [0 ] == '_' and name [1 ] == 'Z' and name [2 ] != 'N' ) {
78- if (source_lang .language != .cpp ) { has_multi_lang_hint = true ; break ; }
82+ if (source_lang .language != .cpp ) {
83+ has_multi_lang_hint = true ;
84+ break ;
85+ }
7986 }
8087 // Rust strong prefixes
8188 if (std .mem .startsWith (u8 , name , "_rust_" ) or
8289 std .mem .startsWith (u8 , name , "rs2py_" ))
8390 {
84- if (source_lang .language != .rust ) { has_multi_lang_hint = true ; break ; }
91+ if (source_lang .language != .rust ) {
92+ has_multi_lang_hint = true ;
93+ break ;
94+ }
8595 }
8696 // Rust personality/eH / unwind
8797 if (std .mem .indexOf (u8 , name , "rust_eh_personality" ) != null or
8898 std .mem .indexOf (u8 , name , "rust_begin_unwind" ) != null or
8999 std .mem .indexOf (u8 , name , "rust_oom" ) != null or
90100 std .mem .startsWith (u8 , name , "__rust_" ))
91101 {
92- if (source_lang .language != .rust ) { has_multi_lang_hint = true ; break ; }
102+ if (source_lang .language != .rust ) {
103+ has_multi_lang_hint = true ;
104+ break ;
105+ }
93106 }
94107
95108 // ── C++ ──────────────────────────────────────────
96109 // C++ personality, EH, RTTI
97110 if (std .mem .indexOf (u8 , name , "__gxx_personality" ) != null or
98111 std .mem .startsWith (u8 , name , "__cxa_" ) or
99- std .mem .startsWith (u8 , name , "_ZTV" ) or // C++ vtable
100- std .mem .startsWith (u8 , name , "_ZTI" ) or // C++ typeinfo
101- std .mem .startsWith (u8 , name , "_ZTS" )) // C++ typeinfo name
112+ std .mem .startsWith (u8 , name , "_ZTV" ) or // C++ vtable
113+ std .mem .startsWith (u8 , name , "_ZTI" ) or // C++ typeinfo
114+ std .mem .startsWith (u8 , name , "_ZTS" )) // C++ typeinfo name
102115 {
103- if (source_lang .language != .cpp ) { has_multi_lang_hint = true ; break ; }
116+ if (source_lang .language != .cpp ) {
117+ has_multi_lang_hint = true ;
118+ break ;
119+ }
104120 }
105121
106122 // ── Go ───────────────────────────────────────────
@@ -114,7 +130,10 @@ pub fn runSingleFileAnalysis(allocator: std.mem.Allocator, path: []const u8, con
114130 std .mem .startsWith (u8 , name , "__go_" ) or
115131 std .mem .indexOf (u8 , name , "_Cgo_" ) != null )
116132 {
117- if (source_lang .language != .go ) { has_multi_lang_hint = true ; break ; }
133+ if (source_lang .language != .go ) {
134+ has_multi_lang_hint = true ;
135+ break ;
136+ }
118137 }
119138
120139 // ── Zig ──────────────────────────────────────────
@@ -123,15 +142,21 @@ pub fn runSingleFileAnalysis(allocator: std.mem.Allocator, path: []const u8, con
123142 std .mem .startsWith (u8 , name , "zig." ) or
124143 std .mem .startsWith (u8 , name , "__zig_" ))
125144 {
126- if (source_lang .language != .zig ) { has_multi_lang_hint = true ; break ; }
145+ if (source_lang .language != .zig ) {
146+ has_multi_lang_hint = true ;
147+ break ;
148+ }
127149 }
128150
129151 // ── Java / JNI ────────────────────────────────────
130152 if (std .mem .startsWith (u8 , name , "Java_" ) or
131153 std .mem .startsWith (u8 , name , "JNI_OnLoad" ) or
132154 std .mem .startsWith (u8 , name , "JNI_OnUnload" ))
133155 {
134- if (source_lang .language != .java ) { has_multi_lang_hint = true ; break ; }
156+ if (source_lang .language != .java ) {
157+ has_multi_lang_hint = true ;
158+ break ;
159+ }
135160 }
136161
137162 // ── Python ────────────────────────────────────────
@@ -141,7 +166,10 @@ pub fn runSingleFileAnalysis(allocator: std.mem.Allocator, path: []const u8, con
141166 std .mem .startsWith (u8 , name , "_PyGC_" ) or
142167 std .mem .startsWith (u8 , name , "_Py_" ))
143168 {
144- if (source_lang .language != .python ) { has_multi_lang_hint = true ; break ; }
169+ if (source_lang .language != .python ) {
170+ has_multi_lang_hint = true ;
171+ break ;
172+ }
145173 }
146174
147175 // ── C# / .NET ─────────────────────────────────────
@@ -159,7 +187,10 @@ pub fn runSingleFileAnalysis(allocator: std.mem.Allocator, path: []const u8, con
159187 std .mem .indexOf (u8 , name , "csharp_exception_personality" ) != null or
160188 std .mem .indexOf (u8 , name , "mono_unity_personality" ) != null )
161189 {
162- if (source_lang .language != .csharp ) { has_multi_lang_hint = true ; break ; }
190+ if (source_lang .language != .csharp ) {
191+ has_multi_lang_hint = true ;
192+ break ;
193+ }
163194 }
164195
165196 // ── C (Unwind / special sections) ─────────────────
@@ -168,7 +199,10 @@ pub fn runSingleFileAnalysis(allocator: std.mem.Allocator, path: []const u8, con
168199 std .mem .startsWith (u8 , name , "__start_" ) or
169200 std .mem .startsWith (u8 , name , "__stop_" ))
170201 {
171- if (source_lang .language != .c ) { has_multi_lang_hint = true ; break ; }
202+ if (source_lang .language != .c ) {
203+ has_multi_lang_hint = true ;
204+ break ;
205+ }
172206 }
173207 }
174208 }
0 commit comments