@@ -5491,6 +5491,78 @@ pub fn resolveExpressionTypeFromAncestors(
54915491 const ty = try analyser .resolveTypeOfNode (.of (params [0 ], handle )) orelse return null ;
54925492 return ty .instanceTypeVal (analyser );
54935493 }
5494+
5495+ if (std .mem .eql (u8 , call_name , "@branchHint" )) {
5496+ if (params .len == 0 ) return null ;
5497+ if (params [0 ] != node ) return null ;
5498+ return analyser .instanceStdBuiltinType ("BranchHint" );
5499+ }
5500+
5501+ if (std .mem .eql (u8 , call_name , "@atomicLoad" )) {
5502+ if (params .len <= 2 ) return null ;
5503+ if (params [2 ] != node ) return null ;
5504+ return analyser .instanceStdBuiltinType ("AtomicOrder" );
5505+ }
5506+
5507+ if (std .mem .eql (u8 , call_name , "@atomicRmw" )) {
5508+ if (params .len > 2 and params [2 ] == node )
5509+ return analyser .instanceStdBuiltinType ("AtomicRmwOp" );
5510+ if (params .len > 4 and params [4 ] == node )
5511+ return analyser .instanceStdBuiltinType ("AtomicOrder" );
5512+ return null ;
5513+ }
5514+
5515+ if (std .mem .eql (u8 , call_name , "@atomicStore" )) {
5516+ if (params .len <= 3 ) return null ;
5517+ if (params [3 ] != node ) return null ;
5518+ return analyser .instanceStdBuiltinType ("AtomicOrder" );
5519+ }
5520+
5521+ if (std .mem .eql (u8 , call_name , "@cmpxchgStrong" )) {
5522+ if (params .len > 4 and params [4 ] == node )
5523+ return analyser .instanceStdBuiltinType ("AtomicOrder" );
5524+ if (params .len > 5 and params [5 ] == node )
5525+ return analyser .instanceStdBuiltinType ("AtomicOrder" );
5526+ return null ;
5527+ }
5528+
5529+ if (std .mem .eql (u8 , call_name , "@cmpxchgWeak" )) {
5530+ if (params .len > 4 and params [4 ] == node )
5531+ return analyser .instanceStdBuiltinType ("AtomicOrder" );
5532+ if (params .len > 5 and params [5 ] == node )
5533+ return analyser .instanceStdBuiltinType ("AtomicOrder" );
5534+ return null ;
5535+ }
5536+
5537+ if (std .mem .eql (u8 , call_name , "@call" )) {
5538+ if (params .len == 0 ) return null ;
5539+ if (params [0 ] != node ) return null ;
5540+ return analyser .instanceStdBuiltinType ("CallModifier" );
5541+ }
5542+
5543+ if (std .mem .eql (u8 , call_name , "@export" )) {
5544+ if (params .len <= 1 ) return null ;
5545+ if (params [1 ] != node ) return null ;
5546+ return analyser .instanceStdBuiltinType ("ExportOptions" );
5547+ }
5548+
5549+ if (std .mem .eql (u8 , call_name , "@extern" )) {
5550+ if (params .len <= 1 ) return null ;
5551+ if (params [1 ] != node ) return null ;
5552+ return analyser .instanceStdBuiltinType ("ExternOptions" );
5553+ }
5554+
5555+ if (std .mem .eql (u8 , call_name , "@reduce" )) {
5556+ if (params .len == 0 ) return null ;
5557+ if (params [0 ] != node ) return null ;
5558+ return analyser .instanceStdBuiltinType ("ReduceOp" );
5559+ }
5560+
5561+ if (std .mem .eql (u8 , call_name , "@Type" )) {
5562+ if (params .len == 0 ) return null ;
5563+ if (params [0 ] != node ) return null ;
5564+ return analyser .instanceStdBuiltinType ("Type" );
5565+ }
54945566 },
54955567
54965568 .@"orelse" = > {
0 commit comments