@shd101wyy/yo 0.0.28 → 0.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ leak:dyld`}var ls,us,co,fs=j(()=>{ls=require("child_process"),us=Tn(require("fs"
8
8
  `,this.headers}emitDeclarationLine(t,n=""){return this.declarations+=n+t+`
9
9
  `,this.declarations}print(){return this.headers+`
10
10
  `+this.declarations+`
11
- `+this.code.trim()}}});function ps(e){return mc.includes(e)}function bi(e){let t=!0;for(let n=0;n<e.length;n++){let r=e[n];if(!ps(r)){t=!1;break}}return t}function Kf(e,t){let n=")";if(!e[t])return-1;let r=e[t].type;if(r==="{")n="}";else if(r==="(")n=")";else if(r==="[")n="]";else throw new Error("Expected '{', '(' or '['");t=t+1;let i=1,o=-1;for(;;){let a=e[t];if(!a)return-1;if(a.type===n){if(i=i-1,i===0){o=t;break}}else a.type===r&&(i=i+1);t=t+1}return o}var Ne,mc,yc,pn=j(()=>{Ne={modulePath:"_",inputString:"_",type:"identifier",value:"_",position:{row:0,column:0,character:0}},mc=["=","+","-","*","/","<",">","@","$","~","&","%","|","!","?","^",".",":","\\","#"];yc=/^[_a-zA-Z\xA0-\uFFFF][_a-zA-Z0-9\xA0-\uFFFF]*[!?]?$/});function _a(e){return"yo"+(0,hc.createHash)("sha1").update(e).digest("hex").slice(0,8)}function Nt(e){let t=dl.get(e);return t===void 0&&(t=0),dl.set(e,t+1),`${_a(e)}_id_${t}`}function ml(e){dl.delete(e)}function Qf(e){return`_${_a(e)}_temp_`}function Zf(e){return`${Qf(e)}${Xf++}`}function en(e,t){return t.startsWith(Qf(e))}function Mo(e,t){let n="";for(let o=0;o<t.length;o++)if(ps(t[o])){let a=mc.indexOf(t[o]);n+=`${a}`}else n+=t[o];let r=_a(e)+"_"+n,i=gc.get(r);return i===void 0?i=0:i++,gc.set(r,i),r+(i==0?"":`_${i}`)}function vc(e){return(0,hc.createHash)("sha1").update(e).digest("hex").slice(0,10)}function fo(){dl.clear(),gc.clear(),Xf=1}var hc,dl,Xf,gc,yn=j(()=>{hc=require("crypto");pn();dl=new Map;Xf=1;gc=new Map});function Jf(e){for(let t in e.types){let{type:n}=e.types[t];n.cInclude&&e.cIncludes.add(n.cInclude)}for(let t in e.externFunctions){let{type:n}=e.externFunctions[t];n.cInclude&&e.cIncludes.add(n.cInclude)}}function ep(e){e.emitter.emitHeaderLine("#ifndef _WIN32"),e.emitter.emitHeaderLine("#define _DEFAULT_SOURCE"),e.emitter.emitHeaderLine("#define _GNU_SOURCE // Needed for sched_getcpu() on Linux"),e.emitter.emitHeaderLine("#else"),e.emitter.emitHeaderLine("#ifndef WIN32_LEAN_AND_MEAN"),e.emitter.emitHeaderLine("#define WIN32_LEAN_AND_MEAN"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine("#ifndef _WINSOCKAPI_"),e.emitter.emitHeaderLine("#define _WINSOCKAPI_"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine("");for(let t of e.cIncludes)e.emitter.emitHeaderLine(`#include ${t}`);e.emitter.emitHeaderLine("#ifdef _WIN32"),e.emitter.emitHeaderLine(" #include <windows.h>"),e.emitter.emitHeaderLine(" #include <bcrypt.h>"),e.emitter.emitHeaderLine(" #include <io.h>"),e.emitter.emitHeaderLine(" #include <sys/stat.h>"),e.emitter.emitHeaderLine("#else"),e.emitter.emitHeaderLine(" #include <unistd.h>"),e.emitter.emitHeaderLine(" #include <sys/stat.h>"),e.emitter.emitHeaderLine(" #include <sys/random.h>"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine(""),e.allocator==="mimalloc"?(e.emitter.emitHeaderLine("// Mimalloc compatibility layer - try mimalloc first, fallback to stdlib"),e.emitter.emitHeaderLine("#ifdef __has_include"),e.emitter.emitHeaderLine(" #if __has_include(<mimalloc.h>)"),e.emitter.emitHeaderLine(" #include <mimalloc.h>"),e.emitter.emitHeaderLine(" #define __yo_malloc mi_malloc"),e.emitter.emitHeaderLine(" #define __yo_calloc mi_calloc"),e.emitter.emitHeaderLine(" #define __yo_realloc mi_realloc"),e.emitter.emitHeaderLine(" #define __yo_free mi_free"),e.emitter.emitHeaderLine(" #define __yo_aligned_alloc mi_aligned_alloc"),e.emitter.emitHeaderLine(" #else"),e.emitter.emitHeaderLine(" #define __yo_malloc malloc"),e.emitter.emitHeaderLine(" #define __yo_calloc calloc"),e.emitter.emitHeaderLine(" #define __yo_realloc realloc"),e.emitter.emitHeaderLine(" #define __yo_free free"),e.emitter.emitHeaderLine(" #define __yo_aligned_alloc aligned_alloc"),e.emitter.emitHeaderLine(" #endif"),e.emitter.emitHeaderLine("#else"),e.emitter.emitHeaderLine(" // Fallback for older compilers without __has_include"),e.emitter.emitHeaderLine(" #define __yo_malloc malloc"),e.emitter.emitHeaderLine(" #define __yo_calloc calloc"),e.emitter.emitHeaderLine(" #define __yo_realloc realloc"),e.emitter.emitHeaderLine(" #define __yo_free free"),e.emitter.emitHeaderLine(" #define __yo_aligned_alloc aligned_alloc"),e.emitter.emitHeaderLine("#endif")):(e.emitter.emitHeaderLine("// Using libc allocator"),e.emitter.emitHeaderLine("#define __yo_malloc malloc"),e.emitter.emitHeaderLine("#define __yo_calloc calloc"),e.emitter.emitHeaderLine("#define __yo_realloc realloc"),e.emitter.emitHeaderLine("#define __yo_free free"),e.emitter.emitHeaderLine("#define __yo_aligned_alloc aligned_alloc")),e.emitter.emitHeaderLine("")}var tp=j(()=>{});function np({token:e}){let{position:t,modulePath:n,inputString:r}=e,{row:i,column:o}=t,s=r.split(`
11
+ `+this.code.trim()}}});function ps(e){return mc.includes(e)}function Ci(e){let t=!0;for(let n=0;n<e.length;n++){let r=e[n];if(!ps(r)){t=!1;break}}return t}function Kf(e,t){let n=")";if(!e[t])return-1;let r=e[t].type;if(r==="{")n="}";else if(r==="(")n=")";else if(r==="[")n="]";else throw new Error("Expected '{', '(' or '['");t=t+1;let i=1,o=-1;for(;;){let a=e[t];if(!a)return-1;if(a.type===n){if(i=i-1,i===0){o=t;break}}else a.type===r&&(i=i+1);t=t+1}return o}var Ne,mc,yc,pn=j(()=>{Ne={modulePath:"_",inputString:"_",type:"identifier",value:"_",position:{row:0,column:0,character:0}},mc=["=","+","-","*","/","<",">","@","$","~","&","%","|","!","?","^",".",":","\\","#"];yc=/^[_a-zA-Z\xA0-\uFFFF][_a-zA-Z0-9\xA0-\uFFFF]*[!?]?$/});function _a(e){return"yo"+(0,hc.createHash)("sha1").update(e).digest("hex").slice(0,8)}function Nt(e){let t=dl.get(e);return t===void 0&&(t=0),dl.set(e,t+1),`${_a(e)}_id_${t}`}function ml(e){dl.delete(e)}function Qf(e){return`_${_a(e)}_temp_`}function Zf(e){return`${Qf(e)}${Xf++}`}function en(e,t){return t.startsWith(Qf(e))}function Mo(e,t){let n="";for(let o=0;o<t.length;o++)if(ps(t[o])){let a=mc.indexOf(t[o]);n+=`${a}`}else n+=t[o];let r=_a(e)+"_"+n,i=gc.get(r);return i===void 0?i=0:i++,gc.set(r,i),r+(i==0?"":`_${i}`)}function vc(e){return(0,hc.createHash)("sha1").update(e).digest("hex").slice(0,10)}function fo(){dl.clear(),gc.clear(),Xf=1}var hc,dl,Xf,gc,yn=j(()=>{hc=require("crypto");pn();dl=new Map;Xf=1;gc=new Map});function Jf(e){for(let t in e.types){let{type:n}=e.types[t];n.cInclude&&e.cIncludes.add(n.cInclude)}for(let t in e.externFunctions){let{type:n}=e.externFunctions[t];n.cInclude&&e.cIncludes.add(n.cInclude)}}function ep(e){e.emitter.emitHeaderLine("#ifndef _WIN32"),e.emitter.emitHeaderLine("#define _DEFAULT_SOURCE"),e.emitter.emitHeaderLine("#define _GNU_SOURCE // Needed for sched_getcpu() on Linux"),e.emitter.emitHeaderLine("#else"),e.emitter.emitHeaderLine("#ifndef WIN32_LEAN_AND_MEAN"),e.emitter.emitHeaderLine("#define WIN32_LEAN_AND_MEAN"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine("#ifndef _WINSOCKAPI_"),e.emitter.emitHeaderLine("#define _WINSOCKAPI_"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine("");for(let t of e.cIncludes)e.emitter.emitHeaderLine(`#include ${t}`);e.emitter.emitHeaderLine("#ifdef _WIN32"),e.emitter.emitHeaderLine(" #include <windows.h>"),e.emitter.emitHeaderLine(" #include <bcrypt.h>"),e.emitter.emitHeaderLine(" #include <io.h>"),e.emitter.emitHeaderLine(" #include <sys/stat.h>"),e.emitter.emitHeaderLine("#else"),e.emitter.emitHeaderLine(" #include <unistd.h>"),e.emitter.emitHeaderLine(" #include <sys/stat.h>"),e.emitter.emitHeaderLine(" #include <sys/random.h>"),e.emitter.emitHeaderLine("#endif"),e.emitter.emitHeaderLine(""),e.allocator==="mimalloc"?(e.emitter.emitHeaderLine("// Mimalloc compatibility layer - try mimalloc first, fallback to stdlib"),e.emitter.emitHeaderLine("#ifdef __has_include"),e.emitter.emitHeaderLine(" #if __has_include(<mimalloc.h>)"),e.emitter.emitHeaderLine(" #include <mimalloc.h>"),e.emitter.emitHeaderLine(" #define __yo_malloc mi_malloc"),e.emitter.emitHeaderLine(" #define __yo_calloc mi_calloc"),e.emitter.emitHeaderLine(" #define __yo_realloc mi_realloc"),e.emitter.emitHeaderLine(" #define __yo_free mi_free"),e.emitter.emitHeaderLine(" #define __yo_aligned_alloc mi_aligned_alloc"),e.emitter.emitHeaderLine(" #else"),e.emitter.emitHeaderLine(" #define __yo_malloc malloc"),e.emitter.emitHeaderLine(" #define __yo_calloc calloc"),e.emitter.emitHeaderLine(" #define __yo_realloc realloc"),e.emitter.emitHeaderLine(" #define __yo_free free"),e.emitter.emitHeaderLine(" #define __yo_aligned_alloc aligned_alloc"),e.emitter.emitHeaderLine(" #endif"),e.emitter.emitHeaderLine("#else"),e.emitter.emitHeaderLine(" // Fallback for older compilers without __has_include"),e.emitter.emitHeaderLine(" #define __yo_malloc malloc"),e.emitter.emitHeaderLine(" #define __yo_calloc calloc"),e.emitter.emitHeaderLine(" #define __yo_realloc realloc"),e.emitter.emitHeaderLine(" #define __yo_free free"),e.emitter.emitHeaderLine(" #define __yo_aligned_alloc aligned_alloc"),e.emitter.emitHeaderLine("#endif")):(e.emitter.emitHeaderLine("// Using libc allocator"),e.emitter.emitHeaderLine("#define __yo_malloc malloc"),e.emitter.emitHeaderLine("#define __yo_calloc calloc"),e.emitter.emitHeaderLine("#define __yo_realloc realloc"),e.emitter.emitHeaderLine("#define __yo_free free"),e.emitter.emitHeaderLine("#define __yo_aligned_alloc aligned_alloc")),e.emitter.emitHeaderLine("")}var tp=j(()=>{});function np({token:e}){let{position:t,modulePath:n,inputString:r}=e,{row:i,column:o}=t,s=r.split(`
12
12
  `)[i];return`${n}:${i+1}:${o+1}:
13
13
  ${s}
14
14
  ${" ".repeat(o+Math.floor(e.value.length/2))}^`}function m({token:e,errorMessage:t,cause:n,isAssertionError:r,kind:i}){let o=`${t.trim()}
@@ -31,7 +31,7 @@ ${e}
31
31
  `,inputString:e});if(t.getParserError())throw t.getParserError();let n=t.getProgram();if(n.length!==1)throw new Error(`Expected exactly one expression from parsed code, got ${n.length}: "${e}"
32
32
  ${n.map(r=>L(r)).join(`
33
33
  `)}
34
- `);return n[0]}var da,Ci=j(()=>{xe();ce();op();pn();da=class e{constructor({modulePath:t,inputString:n}){this.hasTemplateString=!1;this.modulePath=t,this.inputString=n,this.tokens=ip(n,t),this.program=[],this.parse(this.tokens)}skipWhitespace(t,n){for(;t[n]&&(t[n].type==="whitespace"||t[n].type==="single_line_comment"||t[n].type==="multi_line_comment");)n=n+1;return n}skipWhitespaceBackward(t,n){for(;t[n]&&(t[n].type==="whitespace"||t[n].type==="single_line_comment"||t[n].type==="multi_line_comment");)n=n-1;return n}isParenthesizedExpression(t,n,r){return n=this.skipWhitespace(t,n),r=this.skipWhitespaceBackward(t,r),!!t[n]&&t[n].type==="("&&!!t[r]&&t[r].type===")"&&Kf(t,n)===r}parseTemplateString({token:t,index:n}){this.hasTemplateString=!0;let r=t.value,i=[],o="",a=0;for(;a<r.length;){if(r[a]==="\\"&&r[a+1]==="$"){o+="$",a+=2;continue}if(r[a]==="$"&&r[a+1]==="{"){o.length>0&&(i.push({type:"string",value:o}),o="");let l=1,u=a+2,c=u;for(;c<r.length&&l>0;)r[c]==="{"?l++:r[c]==="}"&&l--,l>0&&c++;let f=r.substring(u,c);i.push({type:"expr",value:f}),a=c+1;continue}o+=r[a],a++}o.length>0&&i.push({type:"string",value:o}),i.length===0&&i.push({type:"string",value:""});let s=null;for(let l of i){let u;if(l.type==="string"){let c={type:"string",value:JSON.stringify(l.value),position:t.position,modulePath:t.modulePath,inputString:t.inputString},f={tag:"Atom",token:c},p={tag:"FnCall",func:{tag:"Atom",token:{type:".",value:".",position:t.position,modulePath:t.modulePath,inputString:t.inputString}},args:[f,{tag:"Atom",token:{type:"identifier",value:"to_string",position:t.position,modulePath:t.modulePath,inputString:t.inputString}}],isInfix:!0,token:t};u={tag:"FnCall",func:p,args:[],token:t}}else{let f=new e({modulePath:t.modulePath,inputString:l.value}).getProgram();if(f.length===0)throw m({token:t,errorMessage:"Empty expression in template string interpolation"});let p=f[0],_={tag:"FnCall",func:{tag:"Atom",token:{type:".",value:".",position:t.position,modulePath:t.modulePath,inputString:t.inputString}},args:[p,{tag:"Atom",token:{type:"identifier",value:"to_string",position:t.position,modulePath:t.modulePath,inputString:t.inputString}}],isInfix:!0,token:t};u={tag:"FnCall",func:_,args:[],token:t}}if(s===null)s=u;else{let c={tag:"FnCall",func:{tag:"Atom",token:{type:".",value:".",position:t.position,modulePath:t.modulePath,inputString:t.inputString}},args:[s,{tag:"Atom",token:{type:"operator",value:"+",position:t.position,modulePath:t.modulePath,inputString:t.inputString}}],isInfix:!0,token:t};s={tag:"FnCall",func:c,args:[u],token:t}}}return{expr:s,index:n+1}}parseParenExpr({tokens:t,index:n}){var a;let r=n;if(t[n].type!=="(")throw m({token:t[n],errorMessage:"Expected left paren"});if(((a=t[n+1])==null?void 0:a.type)===")")return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:D.tuple[0],position:t[n].position,modulePath:this.modulePath,inputString:this.inputString}},args:[],token:t[n]},index:n+2};let i=this.parseExpression({tokens:t,index:n+1}),o=i.expr;if(n=i.index,t[n].type===")")return{expr:o,index:n+1};{let s,l=[o];for(;;){if(!t[n])throw m({token:t[n-1],errorMessage:"Expected ) or , for tuple"});if(t[n].type===","){if(!s||s===",")s=",";else throw m({token:t[n],errorMessage:'Cannot mix "," with ";" as separator in (...)'});n=n+1}else if(t[n].type===";"){if(!s||s===";")s=";";else throw m({token:t[n],errorMessage:'Cannot mix ";" with "," as separator in (...)'});n=n+1}if(n=this.skipWhitespace(t,n),t[n].type===")")break;let{expr:c,index:f}=this.parseExpression({tokens:t,index:n});l.push(c),n=f}let u=s===";"||!s;return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:u?D.Tuple[0]:D.tuple[0],position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:l,token:t[r]},index:n+1}}}parseArrayExpr({tokens:t,index:n}){let r=n;if(t[n].type!=="[")throw m({token:t[n],errorMessage:"Expected left bracket"});n=n+1;let i,o=[];for(;;){if(!t[n])throw m({token:t[n-1],errorMessage:"Expected ] or , for array"});if(t[n].type===","){if(!i||i===",")i=",";else throw m({token:t[n],errorMessage:'Cannot mix "," with ";" as separator in [...]'});n=n+1}else if(t[n].type===";"){if(!i||i===";")i=";";else throw m({token:t[n],errorMessage:'Cannot mix ";" with "," as separator in [...]'});n=n+1}if(t[n].type==="]")break;let{expr:u,index:c}=this.parseExpression({tokens:t,index:n});o.push(u),n=c}let a=i===";"||!i;if(a&&o.length>2)throw m({token:t[r],errorMessage:`Expected at 2 arguments for Array type, or 1 argument for Slice type, got ${o.length}`});let s=a&&o.length===2,l=a&&o.length===1;return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:s?D.Array[0]:l?D.Slice[0]:D.array[0],position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:o,token:t[r]},index:n+1}}parseCurlyBracketExpr({tokens:t,index:n}){let r=n;if(t[n].type!=="{")throw m({token:t[n],errorMessage:"Expected left curly bracket"});let i=[],o;for(n=n+1;;){if(n=this.skipWhitespace(t,n),!t[n])throw m({token:t[n-1],errorMessage:'Unexpected end of curly bracket. Expected "}" or "," or ";"'});if(t[n].type===","){if(!o||o===",")o=",";else throw m({token:t[n],errorMessage:'Cannot mix "," with ";" as separator in {...}'});n=n+1}else if(t[n].type===";"){if(!o||o===";")o=";";else throw m({token:t[n],errorMessage:'Cannot mix ";" with "," as separator in {...}'});n=n+1}if(n=this.skipWhitespace(t,n),t[n].type==="}"){let l=t[this.skipWhitespaceBackward(t,n-1)];if(o===";"&&l&&(l.type===";"||l.type==="{")){let u={type:"identifier",value:D.tuple[0],position:l.position,modulePath:this.modulePath,inputString:this.inputString};i.push({tag:"FnCall",func:{tag:"Atom",token:u},args:[],token:u})}break}let{expr:a,index:s}=this.parseExpression({tokens:t,index:n});i.push(a),n=s}if(o===","||!o){for(let s=0;s<i.length;s++){let l=i[s];if(H(l)){let u={type:"operator",value:":",position:t[r].position,modulePath:this.modulePath,inputString:this.inputString},c={tag:"FnCall",func:{tag:"Atom",token:u},isInfix:!0,args:[l,l],token:u};i[s]=c}}return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:"_",position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:i,token:t[r]},index:n+1}}else return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:D.begin[0],position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:i,token:t[r]},index:n+1}}parsePrimary({tokens:t,index:n}){n=this.skipWhitespace(t,n);let r=t[n];if(!r)throw m({token:Ne,errorMessage:"Unexpected end of input"});let i=null;switch(r.type){case"identifier":case"operator":case"bool":case"integer":case"float":case"string":case"char":{i={expr:{tag:"Atom",token:r},index:n+1};break}case"(":{i=this.parseParenExpr({tokens:t,index:n});break}case"[":{i=this.parseArrayExpr({tokens:t,index:n});break}case"{":{i=this.parseCurlyBracketExpr({tokens:t,index:n});break}case".":{i={expr:{tag:"Atom",token:r},index:n+1};break}case"template_string":{i=this.parseTemplateString({token:r,index:n});break}default:throw m({token:r,errorMessage:`Unexpected token "${r.type}"`})}return i}isOperatorAtLineStart(t,n){for(let r=t.length-1;r>=0;r--){let i=t[r];if(i.type==="whitespace"&&i.value.includes(`
34
+ `);return n[0]}var da,ki=j(()=>{xe();ce();op();pn();da=class e{constructor({modulePath:t,inputString:n}){this.hasTemplateString=!1;this.modulePath=t,this.inputString=n,this.tokens=ip(n,t),this.program=[],this.parse(this.tokens)}skipWhitespace(t,n){for(;t[n]&&(t[n].type==="whitespace"||t[n].type==="single_line_comment"||t[n].type==="multi_line_comment");)n=n+1;return n}skipWhitespaceBackward(t,n){for(;t[n]&&(t[n].type==="whitespace"||t[n].type==="single_line_comment"||t[n].type==="multi_line_comment");)n=n-1;return n}isParenthesizedExpression(t,n,r){return n=this.skipWhitespace(t,n),r=this.skipWhitespaceBackward(t,r),!!t[n]&&t[n].type==="("&&!!t[r]&&t[r].type===")"&&Kf(t,n)===r}parseTemplateString({token:t,index:n}){this.hasTemplateString=!0;let r=t.value,i=[],o="",a=0;for(;a<r.length;){if(r[a]==="\\"&&r[a+1]==="$"){o+="$",a+=2;continue}if(r[a]==="$"&&r[a+1]==="{"){o.length>0&&(i.push({type:"string",value:o}),o="");let l=1,u=a+2,c=u;for(;c<r.length&&l>0;)r[c]==="{"?l++:r[c]==="}"&&l--,l>0&&c++;let f=r.substring(u,c);i.push({type:"expr",value:f}),a=c+1;continue}o+=r[a],a++}o.length>0&&i.push({type:"string",value:o}),i.length===0&&i.push({type:"string",value:""});let s=null;for(let l of i){let u;if(l.type==="string"){let c={type:"string",value:JSON.stringify(l.value),position:t.position,modulePath:t.modulePath,inputString:t.inputString},f={tag:"Atom",token:c},p={tag:"FnCall",func:{tag:"Atom",token:{type:".",value:".",position:t.position,modulePath:t.modulePath,inputString:t.inputString}},args:[f,{tag:"Atom",token:{type:"identifier",value:"to_string",position:t.position,modulePath:t.modulePath,inputString:t.inputString}}],isInfix:!0,token:t};u={tag:"FnCall",func:p,args:[],token:t}}else{let f=new e({modulePath:t.modulePath,inputString:l.value}).getProgram();if(f.length===0)throw m({token:t,errorMessage:"Empty expression in template string interpolation"});let p=f[0],_={tag:"FnCall",func:{tag:"Atom",token:{type:".",value:".",position:t.position,modulePath:t.modulePath,inputString:t.inputString}},args:[p,{tag:"Atom",token:{type:"identifier",value:"to_string",position:t.position,modulePath:t.modulePath,inputString:t.inputString}}],isInfix:!0,token:t};u={tag:"FnCall",func:_,args:[],token:t}}if(s===null)s=u;else{let c={tag:"FnCall",func:{tag:"Atom",token:{type:".",value:".",position:t.position,modulePath:t.modulePath,inputString:t.inputString}},args:[s,{tag:"Atom",token:{type:"operator",value:"+",position:t.position,modulePath:t.modulePath,inputString:t.inputString}}],isInfix:!0,token:t};s={tag:"FnCall",func:c,args:[u],token:t}}}return{expr:s,index:n+1}}parseParenExpr({tokens:t,index:n}){var a;let r=n;if(t[n].type!=="(")throw m({token:t[n],errorMessage:"Expected left paren"});if(((a=t[n+1])==null?void 0:a.type)===")")return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:D.tuple[0],position:t[n].position,modulePath:this.modulePath,inputString:this.inputString}},args:[],token:t[n]},index:n+2};let i=this.parseExpression({tokens:t,index:n+1}),o=i.expr;if(n=i.index,t[n].type===")")return{expr:o,index:n+1};{let s,l=[o];for(;;){if(!t[n])throw m({token:t[n-1],errorMessage:"Expected ) or , for tuple"});if(t[n].type===","){if(!s||s===",")s=",";else throw m({token:t[n],errorMessage:'Cannot mix "," with ";" as separator in (...)'});n=n+1}else if(t[n].type===";"){if(!s||s===";")s=";";else throw m({token:t[n],errorMessage:'Cannot mix ";" with "," as separator in (...)'});n=n+1}if(n=this.skipWhitespace(t,n),t[n].type===")")break;let{expr:c,index:f}=this.parseExpression({tokens:t,index:n});l.push(c),n=f}let u=s===";"||!s;return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:u?D.Tuple[0]:D.tuple[0],position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:l,token:t[r]},index:n+1}}}parseArrayExpr({tokens:t,index:n}){let r=n;if(t[n].type!=="[")throw m({token:t[n],errorMessage:"Expected left bracket"});n=n+1;let i,o=[];for(;;){if(!t[n])throw m({token:t[n-1],errorMessage:"Expected ] or , for array"});if(t[n].type===","){if(!i||i===",")i=",";else throw m({token:t[n],errorMessage:'Cannot mix "," with ";" as separator in [...]'});n=n+1}else if(t[n].type===";"){if(!i||i===";")i=";";else throw m({token:t[n],errorMessage:'Cannot mix ";" with "," as separator in [...]'});n=n+1}if(t[n].type==="]")break;let{expr:u,index:c}=this.parseExpression({tokens:t,index:n});o.push(u),n=c}let a=i===";"||!i;if(a&&o.length>2)throw m({token:t[r],errorMessage:`Expected at 2 arguments for Array type, or 1 argument for Slice type, got ${o.length}`});let s=a&&o.length===2,l=a&&o.length===1;return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:s?D.Array[0]:l?D.Slice[0]:D.array[0],position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:o,token:t[r]},index:n+1}}parseCurlyBracketExpr({tokens:t,index:n}){let r=n;if(t[n].type!=="{")throw m({token:t[n],errorMessage:"Expected left curly bracket"});let i=[],o;for(n=n+1;;){if(n=this.skipWhitespace(t,n),!t[n])throw m({token:t[n-1],errorMessage:'Unexpected end of curly bracket. Expected "}" or "," or ";"'});if(t[n].type===","){if(!o||o===",")o=",";else throw m({token:t[n],errorMessage:'Cannot mix "," with ";" as separator in {...}'});n=n+1}else if(t[n].type===";"){if(!o||o===";")o=";";else throw m({token:t[n],errorMessage:'Cannot mix ";" with "," as separator in {...}'});n=n+1}if(n=this.skipWhitespace(t,n),t[n].type==="}"){let l=t[this.skipWhitespaceBackward(t,n-1)];if(o===";"&&l&&(l.type===";"||l.type==="{")){let u={type:"identifier",value:D.tuple[0],position:l.position,modulePath:this.modulePath,inputString:this.inputString};i.push({tag:"FnCall",func:{tag:"Atom",token:u},args:[],token:u})}break}let{expr:a,index:s}=this.parseExpression({tokens:t,index:n});i.push(a),n=s}if(o===","||!o){for(let s=0;s<i.length;s++){let l=i[s];if(H(l)){let u={type:"operator",value:":",position:t[r].position,modulePath:this.modulePath,inputString:this.inputString},c={tag:"FnCall",func:{tag:"Atom",token:u},isInfix:!0,args:[l,l],token:u};i[s]=c}}return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:"_",position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:i,token:t[r]},index:n+1}}else return{expr:{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:D.begin[0],position:t[r].position,modulePath:this.modulePath,inputString:this.inputString}},args:i,token:t[r]},index:n+1}}parsePrimary({tokens:t,index:n}){n=this.skipWhitespace(t,n);let r=t[n];if(!r)throw m({token:Ne,errorMessage:"Unexpected end of input"});let i=null;switch(r.type){case"identifier":case"operator":case"bool":case"integer":case"float":case"string":case"char":{i={expr:{tag:"Atom",token:r},index:n+1};break}case"(":{i=this.parseParenExpr({tokens:t,index:n});break}case"[":{i=this.parseArrayExpr({tokens:t,index:n});break}case"{":{i=this.parseCurlyBracketExpr({tokens:t,index:n});break}case".":{i={expr:{tag:"Atom",token:r},index:n+1};break}case"template_string":{i=this.parseTemplateString({token:r,index:n});break}default:throw m({token:r,errorMessage:`Unexpected token "${r.type}"`})}return i}isOperatorAtLineStart(t,n){for(let r=t.length-1;r>=0;r--){let i=t[r];if(i.type==="whitespace"&&i.value.includes(`
35
35
  `))return t.slice(r+1).every(s=>s.type==="whitespace");if(i.type!=="whitespace")return!1}return t.every(r=>r.type==="whitespace")}parseLeftAssociativeOperator({primaryExpr:t,operatorToken:n,rhs:r,tokens:i,index:o}){if(r.tag==="FnCall"&&r.isInfix&&r.func.tag==="Atom"&&r.func.token.type!=="."){let a=r.args[0],s=r.args[1],l=r.func,u={tag:"FnCall",func:{tag:"Atom",token:n},args:[t,a],isInfix:!0,token:n};return this.parsePrimaryEnd({primaryExpr:{tag:"FnCall",func:l,args:[u,s],isInfix:!0,token:l.token},tokens:i,index:o})}else return this.parsePrimaryEnd({primaryExpr:{tag:"FnCall",func:{tag:"Atom",token:n},args:[t,r],isInfix:!0,token:n},tokens:i,index:o})}getExprMinimumColumnNumber(t){return H(t)?t.token.position.column:Math.min(this.getExprMinimumColumnNumber(t.func),...t.args.map(n=>this.getExprMinimumColumnNumber(n)))}parsePrimaryEnd({primaryExpr:t,tokens:n,index:r}){var u,c,f,p,_;let i=this.skipWhitespace(n,r),o=i!==r,a=((u=n[r-1])==null?void 0:u.type)==="whitespace";r=i;let s=n[i];if(!s||s.type===";"||s.type===","||s.type===")"||s.type==="]"||s.type==="}")return{expr:t,index:r};let l=t.tag==="Atom"&&t.token.type===".";if(l||s.type==="."&&!o&&!a&&((c=n[i+1])==null?void 0:c.type)!=="whitespace"){let{expr:d,index:g}=this.parsePrimary({tokens:n,index:l?r:r+1});r=g;let y={expr:{tag:"FnCall",func:{tag:"Atom",token:l?t.token:s},args:l?[d]:[t,d],isInfix:!l,token:l?t.token:s},index:r};for(;n[r]&&n[r].type===".";){let{expr:h,index:v}=this.parsePrimary({tokens:n,index:r+1});y={expr:{tag:"FnCall",func:{tag:"Atom",token:s},args:[y.expr,h],isInfix:!0,token:s},index:v},r=v}return this.parsePrimaryEnd({primaryExpr:y.expr,tokens:n,index:y.index})}else if((s.type==="operator"||s.type==="."&&!o)&&((f=n[r+1])==null?void 0:f.type)!=="("){let d=this.skipWhitespace(n,r+1),{expr:g,index:y}=this.parseExpression({tokens:n,index:d});if(g.tag==="FnCall"&&g.isInfix&&g.func.tag==="Atom"&&g.func.token.type!=="."&&!this.isParenthesizedExpression(n,d,y-1)){let h=`Ambiguous operator precedence.
36
36
  Please use parentheses to clarify:
37
37
 
@@ -44,13 +44,13 @@ Or use newline after "${s.value}" to confirm the right-associativity.
44
44
  `)),$=n.slice(0,r),C=this.isOperatorAtLineStart($,r),w=n.slice(r+1,d),k=C&&w.length>0&&((p=w[0])==null?void 0:p.type)==="whitespace"&&((_=w[0])==null?void 0:_.value.includes(`
45
45
  `));if(!(E&&!C)){if(!k){if(C)return this.parseLeftAssociativeOperator({primaryExpr:t,operatorToken:s,rhs:g,tokens:n,index:y});throw m({token:s,errorMessage:h})}}}return this.parsePrimaryEnd({primaryExpr:{tag:"FnCall",func:{tag:"Atom",token:s},args:[t,g],isInfix:!0,token:s},tokens:n,index:y})}else if(!o&&s.type==="("){let d=this.parseFunctionCall({func:t,tokens:n,index:r+1,hasWhitespace:!1});return this.parsePrimaryEnd({primaryExpr:d.expr,tokens:n,index:d.index})}else{let d=this.parseFunctionCall({func:t,tokens:n,index:r,hasWhitespace:!0});return this.parsePrimaryEnd({primaryExpr:d.expr,tokens:n,index:d.index})}}parseFunctionArguments({tokens:t,index:n,hasWhitespace:r}){var o;let i=[];if(n=this.skipWhitespace(t,n),!r&&((o=t[n])==null?void 0:o.type)===")")return{args:i,index:n+1};for(;;){let{expr:a,index:s}=this.parseExpression({tokens:t,index:n});i.push(a),n=s;let l=t[n];if((l==null?void 0:l.type)===",")n=n+1;else{if(!l||l.type===";"||l.type==="]"||l.type==="}")return{args:i,index:n};if(l.type===")")return{args:i,index:r?n:n+1};throw m({token:l,errorMessage:r?"Expected ; to end the function call":`Expected , to separate arguments
46
46
  or ) to end the function call`})}}}parseFunctionCall({func:t,tokens:n,index:r,hasWhitespace:i}){let{args:o,index:a}=this.parseFunctionArguments({tokens:n,index:r,hasWhitespace:i});return r=a,{expr:{tag:"FnCall",func:t,args:o,token:t.token},index:r}}parseExpression({tokens:t,index:n}){n=this.skipWhitespace(t,n);let{expr:r,index:i}=this.parsePrimary({tokens:t,index:n});return this.parsePrimaryEnd({primaryExpr:r,tokens:t,index:i})}programToString(){return this.program.map(n=>L(n)).join(`;
47
- `)}parse(t){let n=0,r=[];for(;n<t.length;){switch(t[n].type){case"whitespace":case";":case"single_line_comment":case"multi_line_comment":{n=n+1;continue}}if(n>=t.length)break;try{let{expr:a,index:s}=this.parseExpression({tokens:t,index:n});r.push(a),n=s}catch(a){this.parserError=a;break}}let i=t[this.skipWhitespaceBackward(t,t.length-1)];if(i&&i.type===";"){let o={type:"identifier",value:D.tuple[0],position:i.position,modulePath:this.modulePath,inputString:this.inputString};r.push({tag:"FnCall",func:{tag:"Atom",token:o},args:[],token:o})}this.program=r}getProgram(){return this.hasTemplateString?[{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:D.import[0],position:{row:0,column:0,character:0},modulePath:this.modulePath,inputString:this.inputString}},args:[{tag:"Atom",token:{type:"string",value:JSON.stringify("std/fmt/to_string"),position:{row:0,column:0,character:0},modulePath:this.modulePath,inputString:this.inputString}}],token:{type:"identifier",value:D.import[0],position:{row:0,column:0,character:0},modulePath:this.modulePath,inputString:this.inputString}},...this.program]:this.program}getParserError(){return this.parserError}getTokens(){return this.tokens}}});var Mr=j(()=>{});function _s(e){return e.tag==="unit"||e.tag==="bool"||e.tag==="usize"||e.tag==="isize"||e.tag==="u8"||e.tag==="i8"||e.tag==="u16"||e.tag==="i16"||e.tag==="u32"||e.tag==="i32"||e.tag==="u64"||e.tag==="i64"||e.tag==="f32"||e.tag==="f64"||e.tag==="char"||e.tag==="short"||e.tag==="ushort"||e.tag==="int"||e.tag==="uint"||e.tag==="long"||e.tag==="ulong"||e.tag==="longlong"||e.tag==="ulonglong"||e.tag==="longdouble"}function Pe(e){return(e==null?void 0:e.tag)==="unit"}function dn(e){return(e==null?void 0:e.tag)==="comptime_int"}function On(e){return(e==null?void 0:e.tag)==="comptime_float"}function Sn(e){return(e==null?void 0:e.tag)==="comptime_string"}function Rn(e){return(e==null?void 0:e.tag)==="ComptimeList"}function Oo(e){return Rn(e)&&Nn(e.childType)}function Lr(e){return(e==null?void 0:e.tag)==="bool"}function ds(e){return(e==null?void 0:e.tag)==="usize"}function ms(e){return(e==null?void 0:e.tag)==="isize"}function mi(e){return(e==null?void 0:e.tag)==="u8"}function ys(e){return(e==null?void 0:e.tag)==="i8"}function gs(e){return(e==null?void 0:e.tag)==="u16"}function hs(e){return(e==null?void 0:e.tag)==="i16"}function vs(e){return(e==null?void 0:e.tag)==="u32"}function Ts(e){return(e==null?void 0:e.tag)==="i32"}function Es(e){return(e==null?void 0:e.tag)==="u64"}function $s(e){return(e==null?void 0:e.tag)==="i64"}function bs(e){return(e==null?void 0:e.tag)==="f32"}function Cs(e){return(e==null?void 0:e.tag)==="f64"}function Nn(e){return(e==null?void 0:e.tag)==="Expr"}function at(e){return(e==null?void 0:e.tag)==="Array"}function Rt(e){return(e==null?void 0:e.tag)==="Slice"}function st(e){return(e==null?void 0:e.tag)==="Tuple"}function ln(e){return(e==null?void 0:e.tag)==="Union"}function qe(e){return(e==null?void 0:e.tag)==="Enum"}function ze(e){return(e==null?void 0:e.tag)==="Struct"}function rn(e){return(e==null?void 0:e.tag)==="Struct"&&e.isReferenceSemantics}function Bi(e){return(e==null?void 0:e.tag)==="Struct"&&e.isNewtype}function Qe(e){return(e==null?void 0:e.tag)==="Module"}function ht(e){return(e==null?void 0:e.tag)==="Trait"}function wn(e){return ht(e)&&e.isFn!==void 0}function te(e){return(e==null?void 0:e.tag)==="Function"}function ks(e){return(e==null?void 0:e.tag)==="Function"&&e.return.isCompileTimeOnly}function Vt(e){return(e==null?void 0:e.tag)==="Type"}function ap(e){return Vt(e)&&e.tag==="Type"&&e.level===0}function z(e){return(e==null?void 0:e.tag)==="SomeType"}function _t(e){return(e==null?void 0:e.tag)==="Ptr"}function Fn(e){return(e==null?void 0:e.tag)==="Iso"}function En(e){return(e==null?void 0:e.tag)==="Arc"}function ot(e){return(e==null?void 0:e.tag)==="Dyn"}function pr(e){if(z(e)){let t=e;if(rt(t))return!0;if(t.resolvedConcreteType)return pr(t.resolvedConcreteType)}return rn(e)||ot(e)||Fn(e)||En(e)}function po(e){return(e==null?void 0:e.tag)==="u8"||(e==null?void 0:e.tag)==="i8"||(e==null?void 0:e.tag)==="u16"||(e==null?void 0:e.tag)==="i16"||(e==null?void 0:e.tag)==="u32"||(e==null?void 0:e.tag)==="i32"||(e==null?void 0:e.tag)==="u64"||(e==null?void 0:e.tag)==="i64"||(e==null?void 0:e.tag)==="usize"||(e==null?void 0:e.tag)==="isize"}function _o(e){return(e==null?void 0:e.tag)==="f32"||(e==null?void 0:e.tag)==="f64"}function sp(e){return(e==null?void 0:e.tag)==="i8"||(e==null?void 0:e.tag)==="i16"||(e==null?void 0:e.tag)==="i32"||(e==null?void 0:e.tag)==="i64"||(e==null?void 0:e.tag)==="isize"}function ma(e){return(e==null?void 0:e.tag)==="char"}function Gi(e){return(e==null?void 0:e.tag)==="void"}function Kn(e){return ht(e)&&e.isFuture!==void 0}function yl(e){return ht(e)&&e.isConcrete!==void 0}function yi(e){return!!e&&(e.tag==="char"||e.tag==="short"||e.tag==="ushort"||e.tag==="int"||e.tag==="uint"||e.tag==="long"||e.tag==="ulong"||e.tag==="longlong"||e.tag==="ulonglong"||e.tag==="longdouble")}function ii(e){var r;if(!e||(r=e.return)!=null&&r.isCompileTimeOnly)return!1;let t=e.parameters.some(i=>i.isCompileTimeOnly)||e.forallParameters.length>0||e.implicitParameters.length>0,n=e.parameters.some(i=>!i.isCompileTimeOnly&&z(i.type)&&!rt(i.type));return t||n}function ki(e){var r;if(!e||(r=e.return)!=null&&r.isCompileTimeOnly)return!1;let t=e.parameters.some(i=>i.isCompileTimeOnly)||e.forallParameters.length>0,n=e.parameters.some(i=>!i.isCompileTimeOnly&&z(i.type)&&!rt(i.type));return t||n}function Ec(e){var n;let t=e.type;return t?ii(t)&&(((n=e.specializedFunctionCaches)==null?void 0:n.length)??0)>0:!1}function Ar(e){var t;return rn(e)?e.fields.length===1&&e.fields[0].label==="*"&&!!((t=e.typeName)!=null&&t.startsWith("Box(")):!1}function Xt(e){return(e==null?void 0:e.tag)==="EffectsRow"}var Ae=j(()=>{Gt();Mr()});function gl(e,t,n){let r=!1,i=0;for(let o of t){let a=o.type;if(n.includes(o))throw m({token:n[n.length-1].exprs.expr.token,errorMessage:`Recursive type has infinite size in field "${n[n.length-1].label}"
48
- Insert some indirection (e.g., a pointer '*' or reference '&') to break the cycle.`});if(rn(a))continue;let s=[...n,o],l=Ln(a,s);Vt(l)&&(i=Math.max(i,l.level),l.tag==="Type"&&(r=!0))}return i>0?Er(i):r?Ht(e):Ht(e)}function Ln(e,t=[]){if(ot(e))return Ht(e);if(_s(e))return Ht(e);if(Vt(e))return Er(e.level+1);if(dn(e)||On(e)||Sn(e)||Rn(e))return Ht(e);if(Nn(e))return Ht(e);if(te(e))return Ht(e);if(wn(e))return Ht(e);if(at(e))return Ln(e.childType,t);if(Rt(e))return Ht(e);if(st(e))return gl(e,e.fields,t);if(ze(e))return gl(e,e.fields,t);if(qe(e)){let n=[];for(let r of e.variants)r.fields&&n.push(...r.fields);return gl(e,n,t)}else{if(ln(e))return gl(e,e.fields,t);if(Qe(e))return Er(1,e);if(ht(e))return Er(1,e);if(z(e))return e.parentType;if(_t(e))return Ht(e);if(Fn(e))return Ht(e);if(En(e))return Ht(e);if(Kn(e))return Ht(e);if(Gi(e))return Ht(e);if(Xt(e))return Er(1);throw new Error(`Unknown type tag: ${e.tag}`)}}function lp(e){var t,n,r;if((t=e.exprs.labelExpr)!=null&&t.token)return e.exprs.labelExpr.token;if((n=e.exprs.typeExpr)!=null&&n.token)return e.exprs.typeExpr.token;if((r=e.exprs.defaultValueExpr)!=null&&r.token)return e.exprs.defaultValueExpr.token;throw new Error("Cannot get token for function parameter")}var gi=j(()=>{xe();dt();Ae();Mr()});var _r=j(()=>{});function vt(e){if(!e)return"<runtime value>";switch(e.tag){case"Type":return x(e.value);case"ComptimeInt":case"ComptimeFloat":return e.value.toString();case"ComptimeString":return JSON.stringify(e.value);case"ComptimeList":return`comptime_list(${e.elements.map(vt).join(", ")})`;case"U8":case"I8":case"U16":case"I16":case"U32":case"I32":case"U64":case"I64":case"F32":case"F64":case"Usize":case"Isize":return typeof e.value=="bigint",e.value.toString();case"Bool":return e.value.toString();case"Array":return`[${e.elements.map(vt).join(", ")}${e.elements.length===1?",":""}]`;case"Slice":return`slice[${e.sourceArray[0].elements.slice(e.startIndex,e.endIndex).map(vt).join(", ")}]`;case"Tuple":return e.fields.length===0?"()":`(${e.fields.map(vt).join(", ")}${e.fields.length===1?",":""})`;case"Struct":return`${e.type.typeName??"_"}(${e.fields.map((t,n)=>{let r=e.type.fields[n].label;return bi(r)&&(r=`(${r})`),`${r}: ${vt(t)}`}).join(", ")})`;case"Enum":{if(e.fields.length===0)return`.${e.variantName}`;let t=e.type.variants.find(n=>n.name===e.variantName);return`.${e.variantName}(${e.fields.map((n,r)=>{let i=(t==null?void 0:t.fields[r].label)??"_";return bi(i)&&(i=`(${i})`),`${i}: ${vt(n)}`}).join(", ")})`}case"Function":return e.funcName?`<fn ${e.funcName}>`:e.type.typeName?`<fn ${e.type.typeName}>`:"<fn>";case"Module":return`${e.type.typeName??"_"}(${e.fields.map((t,n)=>{let r=e.type.fields[n].label;return bi(r)&&(r=`(${r})`),`${r}: ${vt(t)}`}).join(", ")})`;case"Trait":return`${e.type.typeName??"_"}(${e.fields.map((t,n)=>{let r=e.type.fields[n].label;return bi(r)&&(r=`(${r})`),`${r}: ${vt(t)}`}).join(", ")})`;case"Unit":return"()";case"Expr":return`quote(${L(e.value)})`;case"Unknown":return e.variableName?e.variableName:`<comptime ${x(e.type)}>`;case"Ptr":{let t=e.targetValue[0];return oi(t)?`<ptr to ${vt(t.elements[e.targetIndex])}>`:`<ptr to ${vt(t)}>`}default:throw new Error("valueToString: Unsupported value")}}function Y(e){return(e==null?void 0:e.tag)==="Type"}function Wr(e){return(e==null?void 0:e.tag)==="ComptimeInt"}function vl(e){return(e==null?void 0:e.tag)==="ComptimeFloat"}function St(e){return(e==null?void 0:e.tag)==="ComptimeString"}function wi(e){return(e==null?void 0:e.tag)==="ComptimeList"}function up(e){return wi(e)&&Nn(e.type.childType)}function wt(e){return(e==null?void 0:e.tag)==="ComptimeInt"||(e==null?void 0:e.tag)==="ComptimeFloat"||(e==null?void 0:e.tag)==="U8"||(e==null?void 0:e.tag)==="I8"||(e==null?void 0:e.tag)==="U16"||(e==null?void 0:e.tag)==="I16"||(e==null?void 0:e.tag)==="U32"||(e==null?void 0:e.tag)==="I32"||(e==null?void 0:e.tag)==="U64"||(e==null?void 0:e.tag)==="I64"||(e==null?void 0:e.tag)==="F32"||(e==null?void 0:e.tag)==="F64"||(e==null?void 0:e.tag)==="Usize"||(e==null?void 0:e.tag)==="Isize"}function Lt(e){return(e==null?void 0:e.tag)==="Bool"}function $e(e){return(e==null?void 0:e.tag)==="Function"}function Ge(e){return(e==null?void 0:e.tag)==="Unknown"}function $r(e){return(e==null?void 0:e.tag)==="Tuple"}function Ir(e){return(e==null?void 0:e.tag)==="Struct"}function oi(e){return(e==null?void 0:e.tag)==="Array"}function hl(e){return(e==null?void 0:e.tag)==="Slice"}function Dn(e){return(e==null?void 0:e.tag)==="Enum"}function At(e){return(e==null?void 0:e.tag)==="Module"}function mn(e){return(e==null?void 0:e.tag)==="Trait"}function ya(e){return(e==null?void 0:e.tag)==="Ptr"}function dr(e){return(e==null?void 0:e.tag)==="Expr"}function _e(e){return{tag:"Type",type:Ln(e),value:e}}function lr(e){return{tag:"ComptimeString",type:Pn(),value:e}}function ai(e,t){return{tag:"ComptimeList",type:ws(e),elements:t}}function Xn(e,t){let n;if(e==="ComptimeInt")n=yo();else if(e==="ComptimeFloat")n=ha();else if(e==="U8")n=Ta();else if(e==="I8")n=Ea();else if(e==="U16")n=$a();else if(e==="I16")n=ba();else if(e==="U32")n=Ca();else if(e==="I32")n=go();else if(e==="U64")n=ka();else if(e==="I64")n=wa();else if(e==="F32")n=Fa();else if(e==="F64")n=ho();else if(e==="Usize")n=_n();else if(e==="Isize")n=va();else throw new Error(`createNumberValue: Unsupported tag: ${e}`);return{tag:e,type:n,value:t}}function Fi(e){return Xn("ComptimeInt",e)}function Tl(e){return Xn("ComptimeFloat",e)}function on(e){return{tag:"Bool",type:Bt(),value:e}}function oe(e,{variableName:t,recursiveTypeRef:n,env:r,context:i}){if(Vt(e)&&e.level===0){if(!t)throw console.trace("!variableName bug found in createUnknownValue"),new Error(`createUnknownValue expects a variable name for type ${x(e)}`);let o=Or(e,t,{recursiveTypeRef:n,env:r,context:i});return _e(o)}return{tag:"Unknown",type:e,variableName:t}}function si(e,t){return{tag:"Struct",type:e,fields:t}}function El(e,t){return{tag:"Module",type:e,fields:t}}function ga(e,t){return{tag:"Trait",type:e,fields:t}}function $l(e,t){return{tag:"Tuple",type:e,fields:t}}function Ro(e,t,n){return{tag:"Enum",type:e,variantName:t,fields:n}}function mo(e,t){return{tag:"Array",type:e,elements:t}}function bl(e,t,n,r){return{tag:"Slice",type:e,sourceArray:t,startIndex:n,endIndex:r}}function li(e){return{tag:"Expr",type:gr(),value:e}}function $c(e,t,n=0){return{tag:"Ptr",type:e,targetValue:t,targetIndex:n}}function Vn(e,t){let n=e.value,r=t.value;if(n===r)return!0;if(!n||!r)return!1;if(n.tag==="Type"&&r.tag==="Type")return ie({type:n.value,env:e.env},{type:r.value,env:t.env},!0);if(St(n)&&St(r))return n.value===r.value;if(wi(n)&&wi(r)){if(n.elements.length!==r.elements.length)return!1;for(let i=0;i<n.elements.length;i++)if(!Vn({value:n.elements[i],env:e.env},{value:r.elements[i],env:t.env}))return!1;return!0}else if(wt(n)&&wt(r)){let i=n.value,o=r.value;if(typeof i==typeof o)return i===o;let a=typeof i=="bigint"?i:BigInt(i),s=typeof o=="bigint"?o:BigInt(o);return a===s}else{if(Lt(n)&&Lt(r))return n.value===r.value;if(oi(n)&&oi(r)){if(n.elements.length!==r.elements.length)return!1;for(let i=0;i<n.elements.length;i++)if(!Vn({value:n.elements[i],env:e.env},{value:r.elements[i],env:t.env}))return!1;return!0}else if(hl(n)&&hl(r)){let i=n.endIndex-n.startIndex,o=r.endIndex-r.startIndex;if(i!==o)return!1;for(let a=0;a<i;a++){let s=n.sourceArray[0].elements[n.startIndex+a],l=r.sourceArray[0].elements[r.startIndex+a];if(!Vn({value:s,env:e.env},{value:l,env:t.env}))return!1}return!0}else if($r(n)&&$r(r)){if(n.fields.length!==r.fields.length)return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(Ir(n)&&Ir(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0))return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(Dn(n)&&Dn(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0)||n.variantName!==r.variantName)return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(At(n)&&At(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0))return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(mn(n)&&mn(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0))return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else{if(dr(n)&&dr(r))return n.value===r.value||Cl(n.value,r.value);if(Ge(n)&&Ge(r)){let i,o;if(n.variableName){let a=ue(e.env,n.variableName);if(a.length>0){let s=a[a.length-1];s.value&&!Ge(s.value[0])&&(i=s.value[0])}}if(r.variableName){let a=ue(t.env,r.variableName);if(a.length>0){let s=a[a.length-1];s.value&&!Ge(s.value[0])&&(o=s.value[0])}}return i&&o?Vn({value:i,env:e.env},{value:o,env:t.env}):i||o?!1:ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0)}else if(Ge(n)&&!Ge(r)){if(n.variableName){let i=ue(e.env,n.variableName);if(i.length>0){let o=i[i.length-1];if(o.value&&!Ge(o.value[0]))return Vn({value:o.value[0],env:e.env},{value:r,env:t.env})}}return!1}else if(!Ge(n)&&Ge(r)){if(r.variableName){let i=ue(t.env,r.variableName);if(i.length>0){let o=i[i.length-1];if(o.value&&!Ge(o.value[0]))return Vn({value:n,env:e.env},{value:o.value[0],env:t.env})}}return!1}else return ya(n)&&ya(r)?n.targetValue===r.targetValue&&n.targetIndex===r.targetIndex:!1}}}var ge=j(()=>{ft();ce();pn();Qt();dt();Ae();gi();Je();_r()});function Ai(e,t){return e?Uo(e,t):!1}function Ii(e,t){return e?rE(e,t):!1}function Uo(e,t){return hi(e,t)&&!Ki(e,t)}function rE(e,t){let n=hi(e,t),r=Ki(e,t);return!n&&r}function ut(e,t=[]){if(!e||t.includes(e)||(t.push(e),e.isExtern))return!1;if(pr(e))return!0;switch(e.tag){case"Array":return ut(e.childType,t);case"Tuple":return e.fields.some(n=>ut(n.type,t));case"Union":return e.fields.some(n=>ut(n.type,t));case"Struct":return e.fields.some(n=>ut(n.type,t));case"Enum":return e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>ut(i.type,t))});case"Iso":return ut(e.childType,t);case"Arc":return ut(e.childType,t);case"Module":return!1;case"Function":return!1;case"SomeType":{let n=e;return rt(n)?!0:n.resolvedConcreteType?ut(n.resolvedConcreteType,t):!0}default:return!1}}function lt(e,t=[]){if(!e||t.includes(e))return!1;if(t.push(e),z(e))return e.isExtern?!1:e.resolvedConcreteType?lt(e.resolvedConcreteType,t):!(Qn(e)||rt(e));switch(e.tag){case"Array":return lt(e.childType,t);case"Tuple":return e.fields.some(n=>lt(n.type,t));case"Struct":return e.fields.some(n=>!n.isEffectParam&&lt(n.type,t));case"Enum":return e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>lt(i.type,t))});case"Union":return e.fields.some(n=>lt(n.type,t));case"Function":{let n=e;return n.forallParameters.length>0||n.parameters.some(r=>lt(r.type,t))||lt(n.return.type,t)}case"Module":return e.fields.some(n=>lt(n.type,t));case"Ptr":return lt(e.childType,t);default:return!1}}function Wi(e,t=new Set){return t.has(e.id)?!1:(t.add(e.id),at(e)?Ge(e.length)?!0:Wi(e.childType,t):_t(e)||Rt(e)?Wi(e.childType,t):st(e)?e.fields.some(n=>Wi(n.type,t)):ze(e)?e.fields.some(n=>Wi(n.type,t)):qe(e)?e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>Wi(i.type,t))}):ln(e)?e.fields.some(n=>Wi(n.type,t)):!1)}function Cc(e){let t=new Set,n=new Set;function r(i){if(!(i&&n.has(i))){if(i&&n.add(i),z(i)){if(t.has(i))return;i.resolvedConcreteType||t.add(i)}switch(i.tag){case"Array":r(i.childType);break;case"Tuple":i.fields.forEach(o=>r(o.type));break;case"Struct":i.fields.forEach(o=>r(o.type));break;case"Enum":i.variants.forEach(o=>{var a;(a=o.fields)==null||a.forEach(s=>r(s.type))});break;case"Union":i.fields.forEach(o=>r(o.type));break;case"Module":i.fields.forEach(o=>r(o.type));break;case"Ptr":r(i.childType);break;default:break}}}return r(e),t}function Aa(e){if(!e)return!1;switch(e.tag){case"Array":{let t=e;return Ge(t.length)||Aa(t.childType)}case"SomeType":return!0;case"Module":return!1;case"Trait":{let t=e;return t.isFn?Aa(t.isFn.callType):!1}default:return!1}}function un({type:e,expectedType:t,expr:n,env:r}){let i;if(dn(e))i=go();else if(On(e))i=ho();else if(Sn(e))t&&(_t(t)&&(mi(t.childType)||ma(t.childType))||Rt(t))&&(i=t),i||(i=_p(r));else return e;return i&&(n!=null&&n.$)&&(n.$.convertedRuntimeType=i),i??e}function bc(e,t=new Set){let n=e.label;e.isQuote?n=`quote(${n})`:e.isImplicit||e.isCompileTimeOnly&&(n=`comptime(${n})`);let r=x(e.type,t),i=e.exprs.defaultValueExpr?L(e.exprs.defaultValueExpr):"";return n===""?r:i?`(${n} : ${r}) ?= ${i}`:`${n} : ${r}`}function La(e,t=new Set){let n=e.label;bi(n)&&(n=`(${n})`);let r=e.defaultValue?vt(e.defaultValue):"",i=e.assignedValue?vt(e.assignedValue):"";return r?`(${n}: ${x(e.type,t)}) ?= ${r}`:i?`(${n}: ${x(e.type,t)}) = ${i}`:`${n}: ${x(e.type,t)}`}function cp(e,t=new Set){let n=e.label;bi(n)&&(n=`(${n})`);let r=e.defaultValue?vt(e.defaultValue):"",i=e.assignedValue?vt(e.assignedValue):"";return r?`(${n} : ${x(e.type,t)}) ?= ${r}`:i?`(${n} : ${x(e.type,t)}) = ${i}`:`${n} : ${x(e.type,t)}`}function fp(e,t=new Set){var f;let n=e.parameters.map(p=>bc(p,t)).join(", "),r=e.forallParameters.length>0?`forall(${e.forallParameters.map(p=>bc(p,t)).join(", ")})`:"",i="";e.variadicParameter&&(e.variadicParameter.label==="..."?i="...":e.variadicParameter.isQuote?i=`...(quote(${e.variadicParameter.label}))`:e.variadicParameter.isCompileTimeOnly?i=`...(comptime(${e.variadicParameter.label}))`:i=`...(${e.variadicParameter.label})`);let o=x(e.return.type,t),a=o;e.return.isUnquote?e.return.label?a=`(unquote(${e.return.label}) : ${o})`:a=`unquote(${o})`:e.return.isCompileTimeOnly&&(e.return.label?a=`(comptime(${e.return.label}) : ${o})`:a=`comptime(${o})`);let s=e.implicitParameters.length>0?`using(${e.implicitParameters.map(p=>p.isEffectRowSpread?`...(${p.label})`:bc(p,t)).join(", ")})`:"",l=[r,n,s,i].filter(p=>!!p).join(", "),u=(f=e.SelfType)==null?void 0:f.typeName;return`${u?`(${u}) `:""}fn(${l}) -> ${a}`}function x(e,t=new Set){if(e.id&&t.has(e.id))return e.typeName||`<circular:${e.tag}>`;e.id&&t.add(e.id);try{return iE(e,t)}finally{e.id&&t.delete(e.id)}}function iE(e,t){if(!e)return"unknown";switch(e.tag){case"unit":return"unit";case"bool":return"bool";case"usize":return"usize";case"isize":return"isize";case"u8":return"u8";case"i8":return"i8";case"u16":return"u16";case"i16":return"i16";case"u32":return"u32";case"i32":return"i32";case"u64":return"u64";case"i64":return"i64";case"f32":return"f32";case"f64":return"f64";case"Type":return"level"in e&&typeof e.level=="number"&&e.level>0?`Type(${e.level})`:"Type";case"Array":return`[${x(e.childType,t)}; ${vt(e.length)}]`;case"Slice":return`[${x(e.childType,t)}]`;case"Tuple":return e.fields.length===0?"()":`(${e.fields.map(n=>La(n,t)).join(", ")}${e.fields.length===1?",":""})`;case"Struct":{let n=e;return n.typeName?n.typeName:`${n.typeName?`(${n.typeName}) `:""}${n.isReferenceSemantics?"object":n.isNewtype?"newtype":"struct"}(${n.fields.map(r=>La(r,t)).join(", ")})`}case"Enum":{let n=e;if(n.typeName){let r=n.typeName;return n.requiredVariantNames??n.selectedVariantName?`${r} (${n.requiredVariantNames?`${n.requiredVariantNames.map(i=>`.${i}`).join(" | ")} required`:`.${n.selectedVariantName} selected`})`:r}return`${n.typeName?`(${n.typeName}) `:""}enum(${n.variants.map(r=>`${r.name}${r.fields?`(${r.fields.map(i=>La(i,t)).join(", ")})`:""}`).join(", ")})`}case"Union":{let n=e;if(n.typeName)return n.typeName;let r=n.fields;return`${n.typeName?`(${n.typeName}) `:""}${n.typeName?"union":n.id}(${r.map(i=>La(i,t)).join(", ")})`}case"Module":{let n=e,r;return n.typeName?r=n.typeName:r=`${n.typeName?`(${n.typeName}) `:""}module(${n.fields.map(i=>cp(i,t)).join(", ")})`,r}case"Trait":{let n=e;if(wn(n))return`Fn${fp(n.isFn.callType,t).slice(2)}`;if(Kn(n)){let i=[x(n.isFuture.outputType,t)];for(let o of n.isFuture.effects)o.isEffectRowSpread?i.push(`...(${o.label})`):i.push(x(o.type,t));return`Future(${i.join(", ")})`}let r;return n.typeName?r=n.typeName:r=`${n.typeName?`(${n.typeName}) `:""}trait(${n.fields.map(i=>cp(i,t)).join(", ")})`,n.receiverType&&(r=`(${x(n.receiverType,t)} <: ${r})`),r}case"Function":{let n=e;return n.typeName?n.typeName:fp(n,t)}case"SomeType":{let n=e;if(n.typeName)return n.typeName;if(n.functionApplication)return L(n.functionApplication);let r=[];if(n.requiredTraits&&n.requiredTraits.length>0)for(let i of n.requiredTraits)r.push(x(i.traitType,t));if(n.negativeTraits&&n.negativeTraits.length>0)for(let i of n.negativeTraits)r.push(`!(${x(i.traitType,t)})`);return r.length>0?`${n.name||"Impl"}(${r.join(", ")})`:n.name||"Impl()"}case"Ptr":return`*(${x(e.childType,t)})`;case"Iso":return`Iso(${x(e.childType,t)})`;case"Arc":return`Arc(${x(e.childType,t)})`;case"Expr":return"Expr";case"ComptimeList":return`ComptimeList(${x(e.childType)})`;case"EffectsRow":{let n=e;return n.implicitParameters.length===0?"EffectsRow()":`EffectsRow(${n.implicitParameters.map(r=>`${r.label} : ${x(r.type,t)}`).join(", ")})`}case"Dyn":{let n=e;if(n.typeName)return n.typeName;let r=[];for(let{traitType:i}of n.requiredTraits)r.push(x(i,t));if(n.negativeTraits&&n.negativeTraits.length>0)for(let{traitType:i}of n.negativeTraits)r.push(`!(${x(i,t)})`);return`Dyn(${r.join(", ")})`}default:return`${e.tag}`}}function pp(e){if(e<=0||e%8!==0)throw new Error(`Invalid pointer size: ${e} bits. Must be positive and divisible by 8.`);kc=e}function qi(){return kc}function kl(){return kc/8}function oE(e){let t=vo(e.childType);if(t===null)return null;if(t===-1)return-1;let n=e.length;if(wt(n)){let r=BigInt(n.value);if(r<0)throw new Error("Array length cannot be negative");return Number(r)*t}return null}function aE(e){let t=0;for(let n of e.fields){let r=vo(n.type);if(r===null)return null;if(r===-1)return-1;t+=r}return t}function sE(e){let t=0;for(let n of e.fields){let r=vo(n.type);if(r===null)return null;if(r===-1)return-1;t+=r}return t}function lE(e){let t=0,n=0;for(let d of e.variants){let g=0;if(d.fields)for(let y of d.fields){let h=vo(y.type);if(h===null)return null;if(h===-1)return-1;g+=h;let v=Yi(y.type);if(v===null)return null;n=Math.max(n,v*8)}t=Math.max(t,g)}let r=Math.ceil(Math.ceil(Math.log2(e.variants.length))/8)*8,i=32,o=Math.max(n,8),a=Math.max(i,o),s=r/8,l=o/8,u=(l-s%l)%l*8,c=r+u+t,f=c/8,p=a/8,_=(p-f%p)%p*8;return c+_}function uE(e){let t=0;for(let n of e.fields){let r=vo(n.type);if(r===null)return null;if(r===-1)return-1;t=Math.max(t,r)}return t}function Yi(e){if(z(e))return null;if(Pe(e)||Vt(e)||dn(e)||On(e)||Sn(e)||Rn(e)||Qe(e)||ht(e)||Nn(e))return 1;if(Lr(e))return 1;if(ds(e)||ms(e))return kl();if(mi(e)||ys(e))return 1;if(gs(e)||hs(e))return 2;if(vs(e)||Ts(e))return 4;if(Es(e)||$s(e))return 8;if(bs(e))return 4;if(Cs(e))return 8;if(at(e))return Yi(e.childType);if(st(e)){let t=1;for(let n of e.fields){let r=Yi(n.type);if(r===null)return null;t=Math.max(t,r)}return t}else if(ze(e)){if(e.isReferenceSemantics)return kl();if(e.isNewtype)return Yi(e.fields[0].type);let t=1;for(let n of e.fields){let r=Yi(n.type);if(r===null)return null;t=Math.max(t,r)}return t}else if(qe(e)){let t=1;for(let n of e.variants)if(n.fields)for(let r of n.fields){let i=Yi(r.type);if(i===null)return null;t=Math.max(t,i)}return t}else if(ln(e)){let t=1;for(let n of e.fields){let r=Yi(n.type);if(r===null)return null;t=Math.max(t,r)}return t}else{if(te(e))return kl();if(_t(e))return kl()}return null}function vo(e){return z(e)?null:Pe(e)||Vt(e)||dn(e)||On(e)||Sn(e)||Rn(e)||Qe(e)||ht(e)||Nn(e)?0:Lr(e)?8:ds(e)||ms(e)?qi():mi(e)||ys(e)?8:gs(e)||hs(e)?16:vs(e)||Ts(e)?32:Es(e)||$s(e)?64:bs(e)?32:Cs(e)?64:at(e)?oE(e):st(e)?aE(e):ze(e)?e.isReferenceSemantics?qi():e.isNewtype?vo(e.fields[0].type):sE(e):qe(e)?lE(e):ln(e)?uE(e):te(e)||_t(e)?qi():null}function Hi(e,t){if(Gi(e))throw tn([{token:t,errorMessage:`Cannot use 'void' type here.
47
+ `)}parse(t){let n=0,r=[];for(;n<t.length;){switch(t[n].type){case"whitespace":case";":case"single_line_comment":case"multi_line_comment":{n=n+1;continue}}if(n>=t.length)break;try{let{expr:a,index:s}=this.parseExpression({tokens:t,index:n});r.push(a),n=s}catch(a){this.parserError=a;break}}let i=t[this.skipWhitespaceBackward(t,t.length-1)];if(i&&i.type===";"){let o={type:"identifier",value:D.tuple[0],position:i.position,modulePath:this.modulePath,inputString:this.inputString};r.push({tag:"FnCall",func:{tag:"Atom",token:o},args:[],token:o})}this.program=r}getProgram(){return this.hasTemplateString?[{tag:"FnCall",func:{tag:"Atom",token:{type:"identifier",value:D.import[0],position:{row:0,column:0,character:0},modulePath:this.modulePath,inputString:this.inputString}},args:[{tag:"Atom",token:{type:"string",value:JSON.stringify("std/fmt/to_string"),position:{row:0,column:0,character:0},modulePath:this.modulePath,inputString:this.inputString}}],token:{type:"identifier",value:D.import[0],position:{row:0,column:0,character:0},modulePath:this.modulePath,inputString:this.inputString}},...this.program]:this.program}getParserError(){return this.parserError}getTokens(){return this.tokens}}});var Mr=j(()=>{});function _s(e){return e.tag==="unit"||e.tag==="bool"||e.tag==="usize"||e.tag==="isize"||e.tag==="u8"||e.tag==="i8"||e.tag==="u16"||e.tag==="i16"||e.tag==="u32"||e.tag==="i32"||e.tag==="u64"||e.tag==="i64"||e.tag==="f32"||e.tag==="f64"||e.tag==="char"||e.tag==="short"||e.tag==="ushort"||e.tag==="int"||e.tag==="uint"||e.tag==="long"||e.tag==="ulong"||e.tag==="longlong"||e.tag==="ulonglong"||e.tag==="longdouble"}function Pe(e){return(e==null?void 0:e.tag)==="unit"}function dn(e){return(e==null?void 0:e.tag)==="comptime_int"}function On(e){return(e==null?void 0:e.tag)==="comptime_float"}function Sn(e){return(e==null?void 0:e.tag)==="comptime_string"}function Rn(e){return(e==null?void 0:e.tag)==="ComptimeList"}function Oo(e){return Rn(e)&&Nn(e.childType)}function Lr(e){return(e==null?void 0:e.tag)==="bool"}function ds(e){return(e==null?void 0:e.tag)==="usize"}function ms(e){return(e==null?void 0:e.tag)==="isize"}function mi(e){return(e==null?void 0:e.tag)==="u8"}function ys(e){return(e==null?void 0:e.tag)==="i8"}function gs(e){return(e==null?void 0:e.tag)==="u16"}function hs(e){return(e==null?void 0:e.tag)==="i16"}function vs(e){return(e==null?void 0:e.tag)==="u32"}function Ts(e){return(e==null?void 0:e.tag)==="i32"}function Es(e){return(e==null?void 0:e.tag)==="u64"}function $s(e){return(e==null?void 0:e.tag)==="i64"}function bs(e){return(e==null?void 0:e.tag)==="f32"}function Cs(e){return(e==null?void 0:e.tag)==="f64"}function Nn(e){return(e==null?void 0:e.tag)==="Expr"}function at(e){return(e==null?void 0:e.tag)==="Array"}function Rt(e){return(e==null?void 0:e.tag)==="Slice"}function st(e){return(e==null?void 0:e.tag)==="Tuple"}function ln(e){return(e==null?void 0:e.tag)==="Union"}function qe(e){return(e==null?void 0:e.tag)==="Enum"}function ze(e){return(e==null?void 0:e.tag)==="Struct"}function rn(e){return(e==null?void 0:e.tag)==="Struct"&&e.isReferenceSemantics}function Gi(e){return(e==null?void 0:e.tag)==="Struct"&&e.isNewtype}function Qe(e){return(e==null?void 0:e.tag)==="Module"}function ht(e){return(e==null?void 0:e.tag)==="Trait"}function wn(e){return ht(e)&&e.isFn!==void 0}function te(e){return(e==null?void 0:e.tag)==="Function"}function ks(e){return(e==null?void 0:e.tag)==="Function"&&e.return.isCompileTimeOnly}function Vt(e){return(e==null?void 0:e.tag)==="Type"}function ap(e){return Vt(e)&&e.tag==="Type"&&e.level===0}function z(e){return(e==null?void 0:e.tag)==="SomeType"}function _t(e){return(e==null?void 0:e.tag)==="Ptr"}function Fn(e){return(e==null?void 0:e.tag)==="Iso"}function En(e){return(e==null?void 0:e.tag)==="Arc"}function ot(e){return(e==null?void 0:e.tag)==="Dyn"}function pr(e){if(z(e)){let t=e;if(rt(t))return!0;if(t.resolvedConcreteType)return pr(t.resolvedConcreteType)}return rn(e)||ot(e)||Fn(e)||En(e)}function po(e){return(e==null?void 0:e.tag)==="u8"||(e==null?void 0:e.tag)==="i8"||(e==null?void 0:e.tag)==="u16"||(e==null?void 0:e.tag)==="i16"||(e==null?void 0:e.tag)==="u32"||(e==null?void 0:e.tag)==="i32"||(e==null?void 0:e.tag)==="u64"||(e==null?void 0:e.tag)==="i64"||(e==null?void 0:e.tag)==="usize"||(e==null?void 0:e.tag)==="isize"}function _o(e){return(e==null?void 0:e.tag)==="f32"||(e==null?void 0:e.tag)==="f64"}function sp(e){return(e==null?void 0:e.tag)==="i8"||(e==null?void 0:e.tag)==="i16"||(e==null?void 0:e.tag)==="i32"||(e==null?void 0:e.tag)==="i64"||(e==null?void 0:e.tag)==="isize"}function ma(e){return(e==null?void 0:e.tag)==="char"}function Wi(e){return(e==null?void 0:e.tag)==="void"}function Kn(e){return ht(e)&&e.isFuture!==void 0}function yl(e){return ht(e)&&e.isConcrete!==void 0}function yi(e){return!!e&&(e.tag==="char"||e.tag==="short"||e.tag==="ushort"||e.tag==="int"||e.tag==="uint"||e.tag==="long"||e.tag==="ulong"||e.tag==="longlong"||e.tag==="ulonglong"||e.tag==="longdouble")}function ii(e){var r;if(!e||(r=e.return)!=null&&r.isCompileTimeOnly)return!1;let t=e.parameters.some(i=>i.isCompileTimeOnly)||e.forallParameters.length>0||e.implicitParameters.length>0,n=e.parameters.some(i=>!i.isCompileTimeOnly&&z(i.type)&&!rt(i.type));return t||n}function wi(e){var r;if(!e||(r=e.return)!=null&&r.isCompileTimeOnly)return!1;let t=e.parameters.some(i=>i.isCompileTimeOnly)||e.forallParameters.length>0,n=e.parameters.some(i=>!i.isCompileTimeOnly&&z(i.type)&&!rt(i.type));return t||n}function Ec(e){var n;let t=e.type;return t?ii(t)&&(((n=e.specializedFunctionCaches)==null?void 0:n.length)??0)>0:!1}function Ar(e){var t;return rn(e)?e.fields.length===1&&e.fields[0].label==="*"&&!!((t=e.typeName)!=null&&t.startsWith("Box(")):!1}function Xt(e){return(e==null?void 0:e.tag)==="EffectsRow"}var Ae=j(()=>{Gt();Mr()});function gl(e,t,n){let r=!1,i=0;for(let o of t){let a=o.type;if(n.includes(o))throw m({token:n[n.length-1].exprs.expr.token,errorMessage:`Recursive type has infinite size in field "${n[n.length-1].label}"
48
+ Insert some indirection (e.g., a pointer '*' or reference '&') to break the cycle.`});if(rn(a))continue;let s=[...n,o],l=Ln(a,s);Vt(l)&&(i=Math.max(i,l.level),l.tag==="Type"&&(r=!0))}return i>0?Er(i):r?Ht(e):Ht(e)}function Ln(e,t=[]){if(ot(e))return Ht(e);if(_s(e))return Ht(e);if(Vt(e))return Er(e.level+1);if(dn(e)||On(e)||Sn(e)||Rn(e))return Ht(e);if(Nn(e))return Ht(e);if(te(e))return Ht(e);if(wn(e))return Ht(e);if(at(e))return Ln(e.childType,t);if(Rt(e))return Ht(e);if(st(e))return gl(e,e.fields,t);if(ze(e))return gl(e,e.fields,t);if(qe(e)){let n=[];for(let r of e.variants)r.fields&&n.push(...r.fields);return gl(e,n,t)}else{if(ln(e))return gl(e,e.fields,t);if(Qe(e))return Er(1,e);if(ht(e))return Er(1,e);if(z(e))return e.parentType;if(_t(e))return Ht(e);if(Fn(e))return Ht(e);if(En(e))return Ht(e);if(Kn(e))return Ht(e);if(Wi(e))return Ht(e);if(Xt(e))return Er(1);throw new Error(`Unknown type tag: ${e.tag}`)}}function lp(e){var t,n,r;if((t=e.exprs.labelExpr)!=null&&t.token)return e.exprs.labelExpr.token;if((n=e.exprs.typeExpr)!=null&&n.token)return e.exprs.typeExpr.token;if((r=e.exprs.defaultValueExpr)!=null&&r.token)return e.exprs.defaultValueExpr.token;throw new Error("Cannot get token for function parameter")}var gi=j(()=>{xe();dt();Ae();Mr()});var _r=j(()=>{});function vt(e){if(!e)return"<runtime value>";switch(e.tag){case"Type":return x(e.value);case"ComptimeInt":case"ComptimeFloat":return e.value.toString();case"ComptimeString":return JSON.stringify(e.value);case"ComptimeList":return`comptime_list(${e.elements.map(vt).join(", ")})`;case"U8":case"I8":case"U16":case"I16":case"U32":case"I32":case"U64":case"I64":case"F32":case"F64":case"Usize":case"Isize":return typeof e.value=="bigint",e.value.toString();case"Bool":return e.value.toString();case"Array":return`[${e.elements.map(vt).join(", ")}${e.elements.length===1?",":""}]`;case"Slice":return`slice[${e.sourceArray[0].elements.slice(e.startIndex,e.endIndex).map(vt).join(", ")}]`;case"Tuple":return e.fields.length===0?"()":`(${e.fields.map(vt).join(", ")}${e.fields.length===1?",":""})`;case"Struct":return`${e.type.typeName??"_"}(${e.fields.map((t,n)=>{let r=e.type.fields[n].label;return Ci(r)&&(r=`(${r})`),`${r}: ${vt(t)}`}).join(", ")})`;case"Enum":{if(e.fields.length===0)return`.${e.variantName}`;let t=e.type.variants.find(n=>n.name===e.variantName);return`.${e.variantName}(${e.fields.map((n,r)=>{let i=(t==null?void 0:t.fields[r].label)??"_";return Ci(i)&&(i=`(${i})`),`${i}: ${vt(n)}`}).join(", ")})`}case"Function":return e.funcName?`<fn ${e.funcName}>`:e.type.typeName?`<fn ${e.type.typeName}>`:"<fn>";case"Module":return`${e.type.typeName??"_"}(${e.fields.map((t,n)=>{let r=e.type.fields[n].label;return Ci(r)&&(r=`(${r})`),`${r}: ${vt(t)}`}).join(", ")})`;case"Trait":return`${e.type.typeName??"_"}(${e.fields.map((t,n)=>{let r=e.type.fields[n].label;return Ci(r)&&(r=`(${r})`),`${r}: ${vt(t)}`}).join(", ")})`;case"Unit":return"()";case"Expr":return`quote(${L(e.value)})`;case"Unknown":return e.variableName?e.variableName:`<comptime ${x(e.type)}>`;case"Ptr":{let t=e.targetValue[0];return oi(t)?`<ptr to ${vt(t.elements[e.targetIndex])}>`:`<ptr to ${vt(t)}>`}default:throw new Error("valueToString: Unsupported value")}}function Y(e){return(e==null?void 0:e.tag)==="Type"}function Wr(e){return(e==null?void 0:e.tag)==="ComptimeInt"}function vl(e){return(e==null?void 0:e.tag)==="ComptimeFloat"}function St(e){return(e==null?void 0:e.tag)==="ComptimeString"}function Fi(e){return(e==null?void 0:e.tag)==="ComptimeList"}function up(e){return Fi(e)&&Nn(e.type.childType)}function wt(e){return(e==null?void 0:e.tag)==="ComptimeInt"||(e==null?void 0:e.tag)==="ComptimeFloat"||(e==null?void 0:e.tag)==="U8"||(e==null?void 0:e.tag)==="I8"||(e==null?void 0:e.tag)==="U16"||(e==null?void 0:e.tag)==="I16"||(e==null?void 0:e.tag)==="U32"||(e==null?void 0:e.tag)==="I32"||(e==null?void 0:e.tag)==="U64"||(e==null?void 0:e.tag)==="I64"||(e==null?void 0:e.tag)==="F32"||(e==null?void 0:e.tag)==="F64"||(e==null?void 0:e.tag)==="Usize"||(e==null?void 0:e.tag)==="Isize"}function Lt(e){return(e==null?void 0:e.tag)==="Bool"}function $e(e){return(e==null?void 0:e.tag)==="Function"}function Ge(e){return(e==null?void 0:e.tag)==="Unknown"}function $r(e){return(e==null?void 0:e.tag)==="Tuple"}function Ir(e){return(e==null?void 0:e.tag)==="Struct"}function oi(e){return(e==null?void 0:e.tag)==="Array"}function hl(e){return(e==null?void 0:e.tag)==="Slice"}function Dn(e){return(e==null?void 0:e.tag)==="Enum"}function At(e){return(e==null?void 0:e.tag)==="Module"}function mn(e){return(e==null?void 0:e.tag)==="Trait"}function ya(e){return(e==null?void 0:e.tag)==="Ptr"}function dr(e){return(e==null?void 0:e.tag)==="Expr"}function _e(e){return{tag:"Type",type:Ln(e),value:e}}function lr(e){return{tag:"ComptimeString",type:Pn(),value:e}}function ai(e,t){return{tag:"ComptimeList",type:ws(e),elements:t}}function Xn(e,t){let n;if(e==="ComptimeInt")n=yo();else if(e==="ComptimeFloat")n=ha();else if(e==="U8")n=Ta();else if(e==="I8")n=Ea();else if(e==="U16")n=$a();else if(e==="I16")n=ba();else if(e==="U32")n=Ca();else if(e==="I32")n=go();else if(e==="U64")n=ka();else if(e==="I64")n=wa();else if(e==="F32")n=Fa();else if(e==="F64")n=ho();else if(e==="Usize")n=_n();else if(e==="Isize")n=va();else throw new Error(`createNumberValue: Unsupported tag: ${e}`);return{tag:e,type:n,value:t}}function Li(e){return Xn("ComptimeInt",e)}function Tl(e){return Xn("ComptimeFloat",e)}function on(e){return{tag:"Bool",type:Bt(),value:e}}function oe(e,{variableName:t,recursiveTypeRef:n,env:r,context:i}){if(Vt(e)&&e.level===0){if(!t)throw console.trace("!variableName bug found in createUnknownValue"),new Error(`createUnknownValue expects a variable name for type ${x(e)}`);let o=Or(e,t,{recursiveTypeRef:n,env:r,context:i});return _e(o)}return{tag:"Unknown",type:e,variableName:t}}function si(e,t){return{tag:"Struct",type:e,fields:t}}function El(e,t){return{tag:"Module",type:e,fields:t}}function ga(e,t){return{tag:"Trait",type:e,fields:t}}function $l(e,t){return{tag:"Tuple",type:e,fields:t}}function Ro(e,t,n){return{tag:"Enum",type:e,variantName:t,fields:n}}function mo(e,t){return{tag:"Array",type:e,elements:t}}function bl(e,t,n,r){return{tag:"Slice",type:e,sourceArray:t,startIndex:n,endIndex:r}}function li(e){return{tag:"Expr",type:gr(),value:e}}function $c(e,t,n=0){return{tag:"Ptr",type:e,targetValue:t,targetIndex:n}}function Vn(e,t){let n=e.value,r=t.value;if(n===r)return!0;if(!n||!r)return!1;if(n.tag==="Type"&&r.tag==="Type")return ie({type:n.value,env:e.env},{type:r.value,env:t.env},!0);if(St(n)&&St(r))return n.value===r.value;if(Fi(n)&&Fi(r)){if(n.elements.length!==r.elements.length)return!1;for(let i=0;i<n.elements.length;i++)if(!Vn({value:n.elements[i],env:e.env},{value:r.elements[i],env:t.env}))return!1;return!0}else if(wt(n)&&wt(r)){let i=n.value,o=r.value;if(typeof i==typeof o)return i===o;let a=typeof i=="bigint"?i:BigInt(i),s=typeof o=="bigint"?o:BigInt(o);return a===s}else{if(Lt(n)&&Lt(r))return n.value===r.value;if(oi(n)&&oi(r)){if(n.elements.length!==r.elements.length)return!1;for(let i=0;i<n.elements.length;i++)if(!Vn({value:n.elements[i],env:e.env},{value:r.elements[i],env:t.env}))return!1;return!0}else if(hl(n)&&hl(r)){let i=n.endIndex-n.startIndex,o=r.endIndex-r.startIndex;if(i!==o)return!1;for(let a=0;a<i;a++){let s=n.sourceArray[0].elements[n.startIndex+a],l=r.sourceArray[0].elements[r.startIndex+a];if(!Vn({value:s,env:e.env},{value:l,env:t.env}))return!1}return!0}else if($r(n)&&$r(r)){if(n.fields.length!==r.fields.length)return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(Ir(n)&&Ir(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0))return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(Dn(n)&&Dn(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0)||n.variantName!==r.variantName)return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(At(n)&&At(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0))return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else if(mn(n)&&mn(r)){if(n.fields.length!==r.fields.length||!ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0))return!1;for(let i=0;i<n.fields.length;i++)if(!Vn({value:n.fields[i],env:e.env},{value:r.fields[i],env:t.env}))return!1;return!0}else{if(dr(n)&&dr(r))return n.value===r.value||Cl(n.value,r.value);if(Ge(n)&&Ge(r)){let i,o;if(n.variableName){let a=ue(e.env,n.variableName);if(a.length>0){let s=a[a.length-1];s.value&&!Ge(s.value[0])&&(i=s.value[0])}}if(r.variableName){let a=ue(t.env,r.variableName);if(a.length>0){let s=a[a.length-1];s.value&&!Ge(s.value[0])&&(o=s.value[0])}}return i&&o?Vn({value:i,env:e.env},{value:o,env:t.env}):i||o?!1:ie({type:n.type,env:e.env},{type:r.type,env:t.env},!0)}else if(Ge(n)&&!Ge(r)){if(n.variableName){let i=ue(e.env,n.variableName);if(i.length>0){let o=i[i.length-1];if(o.value&&!Ge(o.value[0]))return Vn({value:o.value[0],env:e.env},{value:r,env:t.env})}}return!1}else if(!Ge(n)&&Ge(r)){if(r.variableName){let i=ue(t.env,r.variableName);if(i.length>0){let o=i[i.length-1];if(o.value&&!Ge(o.value[0]))return Vn({value:n,env:e.env},{value:o.value[0],env:t.env})}}return!1}else return ya(n)&&ya(r)?n.targetValue===r.targetValue&&n.targetIndex===r.targetIndex:!1}}}var ge=j(()=>{ft();ce();pn();Qt();dt();Ae();gi();Je();_r()});function Ii(e,t){return e?Uo(e,t):!1}function Si(e,t){return e?rE(e,t):!1}function Uo(e,t){return vi(e,t)&&!Ki(e,t)}function rE(e,t){let n=vi(e,t),r=Ki(e,t);return!n&&r}function ut(e,t=[]){if(!e||t.includes(e)||(t.push(e),e.isExtern))return!1;if(pr(e))return!0;switch(e.tag){case"Array":return ut(e.childType,t);case"Tuple":return e.fields.some(n=>ut(n.type,t));case"Union":return e.fields.some(n=>ut(n.type,t));case"Struct":return e.fields.some(n=>ut(n.type,t));case"Enum":return e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>ut(i.type,t))});case"Iso":return ut(e.childType,t);case"Arc":return ut(e.childType,t);case"Module":return!1;case"Function":return!1;case"SomeType":{let n=e;return rt(n)?!0:n.resolvedConcreteType?ut(n.resolvedConcreteType,t):!0}default:return!1}}function lt(e,t=[]){if(!e||t.includes(e))return!1;if(t.push(e),z(e))return e.isExtern?!1:e.resolvedConcreteType?lt(e.resolvedConcreteType,t):!(Qn(e)||rt(e));switch(e.tag){case"Array":return lt(e.childType,t);case"Tuple":return e.fields.some(n=>lt(n.type,t));case"Struct":return e.fields.some(n=>!n.isEffectParam&&lt(n.type,t));case"Enum":return e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>lt(i.type,t))});case"Union":return e.fields.some(n=>lt(n.type,t));case"Function":{let n=e;return n.forallParameters.length>0||n.parameters.some(r=>lt(r.type,t))||lt(n.return.type,t)}case"Module":return e.fields.some(n=>lt(n.type,t));case"Ptr":return lt(e.childType,t);default:return!1}}function Yi(e,t=new Set){return t.has(e.id)?!1:(t.add(e.id),at(e)?Ge(e.length)?!0:Yi(e.childType,t):_t(e)||Rt(e)?Yi(e.childType,t):st(e)?e.fields.some(n=>Yi(n.type,t)):ze(e)?e.fields.some(n=>Yi(n.type,t)):qe(e)?e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>Yi(i.type,t))}):ln(e)?e.fields.some(n=>Yi(n.type,t)):!1)}function Cc(e){let t=new Set,n=new Set;function r(i){if(!(i&&n.has(i))){if(i&&n.add(i),z(i)){if(t.has(i))return;i.resolvedConcreteType||t.add(i)}switch(i.tag){case"Array":r(i.childType);break;case"Tuple":i.fields.forEach(o=>r(o.type));break;case"Struct":i.fields.forEach(o=>r(o.type));break;case"Enum":i.variants.forEach(o=>{var a;(a=o.fields)==null||a.forEach(s=>r(s.type))});break;case"Union":i.fields.forEach(o=>r(o.type));break;case"Module":i.fields.forEach(o=>r(o.type));break;case"Ptr":r(i.childType);break;default:break}}}return r(e),t}function Aa(e){if(!e)return!1;switch(e.tag){case"Array":{let t=e;return Ge(t.length)||Aa(t.childType)}case"SomeType":return!0;case"Module":return!1;case"Trait":{let t=e;return t.isFn?Aa(t.isFn.callType):!1}default:return!1}}function un({type:e,expectedType:t,expr:n,env:r}){let i;if(dn(e))i=go();else if(On(e))i=ho();else if(Sn(e))t&&(_t(t)&&(mi(t.childType)||ma(t.childType))||Rt(t))&&(i=t),i||(i=_p(r));else return e;return i&&(n!=null&&n.$)&&(n.$.convertedRuntimeType=i),i??e}function bc(e,t=new Set){let n=e.label;e.isQuote?n=`quote(${n})`:e.isImplicit||e.isCompileTimeOnly&&(n=`comptime(${n})`);let r=x(e.type,t),i=e.exprs.defaultValueExpr?L(e.exprs.defaultValueExpr):"";return n===""?r:i?`(${n} : ${r}) ?= ${i}`:`${n} : ${r}`}function La(e,t=new Set){let n=e.label;Ci(n)&&(n=`(${n})`);let r=e.defaultValue?vt(e.defaultValue):"",i=e.assignedValue?vt(e.assignedValue):"";return r?`(${n}: ${x(e.type,t)}) ?= ${r}`:i?`(${n}: ${x(e.type,t)}) = ${i}`:`${n}: ${x(e.type,t)}`}function cp(e,t=new Set){let n=e.label;Ci(n)&&(n=`(${n})`);let r=e.defaultValue?vt(e.defaultValue):"",i=e.assignedValue?vt(e.assignedValue):"";return r?`(${n} : ${x(e.type,t)}) ?= ${r}`:i?`(${n} : ${x(e.type,t)}) = ${i}`:`${n} : ${x(e.type,t)}`}function fp(e,t=new Set){var f;let n=e.parameters.map(p=>bc(p,t)).join(", "),r=e.forallParameters.length>0?`forall(${e.forallParameters.map(p=>bc(p,t)).join(", ")})`:"",i="";e.variadicParameter&&(e.variadicParameter.label==="..."?i="...":e.variadicParameter.isQuote?i=`...(quote(${e.variadicParameter.label}))`:e.variadicParameter.isCompileTimeOnly?i=`...(comptime(${e.variadicParameter.label}))`:i=`...(${e.variadicParameter.label})`);let o=x(e.return.type,t),a=o;e.return.isUnquote?e.return.label?a=`(unquote(${e.return.label}) : ${o})`:a=`unquote(${o})`:e.return.isCompileTimeOnly&&(e.return.label?a=`(comptime(${e.return.label}) : ${o})`:a=`comptime(${o})`);let s=e.implicitParameters.length>0?`using(${e.implicitParameters.map(p=>p.isEffectRowSpread?`...(${p.label})`:bc(p,t)).join(", ")})`:"",l=[r,n,s,i].filter(p=>!!p).join(", "),u=(f=e.SelfType)==null?void 0:f.typeName;return`${u?`(${u}) `:""}fn(${l}) -> ${a}`}function x(e,t=new Set){if(e.id&&t.has(e.id))return e.typeName||`<circular:${e.tag}>`;e.id&&t.add(e.id);try{return iE(e,t)}finally{e.id&&t.delete(e.id)}}function iE(e,t){if(!e)return"unknown";switch(e.tag){case"unit":return"unit";case"bool":return"bool";case"usize":return"usize";case"isize":return"isize";case"u8":return"u8";case"i8":return"i8";case"u16":return"u16";case"i16":return"i16";case"u32":return"u32";case"i32":return"i32";case"u64":return"u64";case"i64":return"i64";case"f32":return"f32";case"f64":return"f64";case"Type":return"level"in e&&typeof e.level=="number"&&e.level>0?`Type(${e.level})`:"Type";case"Array":return`[${x(e.childType,t)}; ${vt(e.length)}]`;case"Slice":return`[${x(e.childType,t)}]`;case"Tuple":return e.fields.length===0?"()":`(${e.fields.map(n=>La(n,t)).join(", ")}${e.fields.length===1?",":""})`;case"Struct":{let n=e;return n.typeName?n.typeName:`${n.typeName?`(${n.typeName}) `:""}${n.isReferenceSemantics?"object":n.isNewtype?"newtype":"struct"}(${n.fields.map(r=>La(r,t)).join(", ")})`}case"Enum":{let n=e;if(n.typeName){let r=n.typeName;return n.requiredVariantNames??n.selectedVariantName?`${r} (${n.requiredVariantNames?`${n.requiredVariantNames.map(i=>`.${i}`).join(" | ")} required`:`.${n.selectedVariantName} selected`})`:r}return`${n.typeName?`(${n.typeName}) `:""}enum(${n.variants.map(r=>`${r.name}${r.fields?`(${r.fields.map(i=>La(i,t)).join(", ")})`:""}`).join(", ")})`}case"Union":{let n=e;if(n.typeName)return n.typeName;let r=n.fields;return`${n.typeName?`(${n.typeName}) `:""}${n.typeName?"union":n.id}(${r.map(i=>La(i,t)).join(", ")})`}case"Module":{let n=e,r;return n.typeName?r=n.typeName:r=`${n.typeName?`(${n.typeName}) `:""}module(${n.fields.map(i=>cp(i,t)).join(", ")})`,r}case"Trait":{let n=e;if(wn(n))return`Fn${fp(n.isFn.callType,t).slice(2)}`;if(Kn(n)){let i=[x(n.isFuture.outputType,t)];for(let o of n.isFuture.effects)o.isEffectRowSpread?i.push(`...(${o.label})`):i.push(x(o.type,t));return`Future(${i.join(", ")})`}let r;return n.typeName?r=n.typeName:r=`${n.typeName?`(${n.typeName}) `:""}trait(${n.fields.map(i=>cp(i,t)).join(", ")})`,n.receiverType&&(r=`(${x(n.receiverType,t)} <: ${r})`),r}case"Function":{let n=e;return n.typeName?n.typeName:fp(n,t)}case"SomeType":{let n=e;if(n.typeName)return n.typeName;if(n.functionApplication)return L(n.functionApplication);let r=[];if(n.requiredTraits&&n.requiredTraits.length>0)for(let i of n.requiredTraits)r.push(x(i.traitType,t));if(n.negativeTraits&&n.negativeTraits.length>0)for(let i of n.negativeTraits)r.push(`!(${x(i.traitType,t)})`);return r.length>0?`${n.name||"Impl"}(${r.join(", ")})`:n.name||"Impl()"}case"Ptr":return`*(${x(e.childType,t)})`;case"Iso":return`Iso(${x(e.childType,t)})`;case"Arc":return`Arc(${x(e.childType,t)})`;case"Expr":return"Expr";case"ComptimeList":return`ComptimeList(${x(e.childType)})`;case"EffectsRow":{let n=e;return n.implicitParameters.length===0?"EffectsRow()":`EffectsRow(${n.implicitParameters.map(r=>`${r.label} : ${x(r.type,t)}`).join(", ")})`}case"Dyn":{let n=e;if(n.typeName)return n.typeName;let r=[];for(let{traitType:i}of n.requiredTraits)r.push(x(i,t));if(n.negativeTraits&&n.negativeTraits.length>0)for(let{traitType:i}of n.negativeTraits)r.push(`!(${x(i,t)})`);return`Dyn(${r.join(", ")})`}default:return`${e.tag}`}}function pp(e){if(e<=0||e%8!==0)throw new Error(`Invalid pointer size: ${e} bits. Must be positive and divisible by 8.`);kc=e}function qi(){return kc}function kl(){return kc/8}function oE(e){let t=vo(e.childType);if(t===null)return null;if(t===-1)return-1;let n=e.length;if(wt(n)){let r=BigInt(n.value);if(r<0)throw new Error("Array length cannot be negative");return Number(r)*t}return null}function aE(e){let t=0,n=1;for(let r of e.fields){let i=vo(r.type);if(i===null)return null;if(i===-1)return-1;let o=hi(r.type);if(o===null)return null;let a=Math.ceil(i/8);t=Math.ceil(t/o)*o,t+=a,n=Math.max(n,o)}return t=Math.ceil(t/n)*n,t*8}function sE(e){let t=0,n=1;for(let r of e.fields){let i=vo(r.type);if(i===null)return null;if(i===-1)return-1;let o=hi(r.type);if(o===null)return null;let a=Math.ceil(i/8);t=Math.ceil(t/o)*o,t+=a,n=Math.max(n,o)}return t=Math.ceil(t/n)*n,t*8}function lE(e){let t=0,n=0;for(let d of e.variants){let g=0,y=1;if(d.fields)for(let v of d.fields){let E=vo(v.type);if(E===null)return null;if(E===-1)return-1;let $=hi(v.type);if($===null)return null;let C=Math.ceil(E/8);g=Math.ceil(g/$)*$,g+=C,y=Math.max(y,$),n=Math.max(n,$*8)}g=Math.ceil(g/y)*y;let h=g*8;t=Math.max(t,h)}let r=Math.ceil(Math.ceil(Math.log2(e.variants.length))/8)*8,i=32,o=Math.max(n,8),a=Math.max(i,o),s=r/8,l=o/8,u=(l-s%l)%l*8,c=r+u+t,f=c/8,p=a/8,_=(p-f%p)%p*8;return c+_}function uE(e){let t=0;for(let n of e.fields){let r=vo(n.type);if(r===null)return null;if(r===-1)return-1;t=Math.max(t,r)}return t}function hi(e){if(z(e))return null;if(Pe(e)||Vt(e)||dn(e)||On(e)||Sn(e)||Rn(e)||Qe(e)||ht(e)||Nn(e))return 1;if(Lr(e))return 1;if(ds(e)||ms(e))return kl();if(mi(e)||ys(e))return 1;if(gs(e)||hs(e))return 2;if(vs(e)||Ts(e))return 4;if(Es(e)||$s(e))return 8;if(bs(e))return 4;if(Cs(e))return 8;if(at(e))return hi(e.childType);if(st(e)){let t=1;for(let n of e.fields){let r=hi(n.type);if(r===null)return null;t=Math.max(t,r)}return t}else if(ze(e)){if(e.isReferenceSemantics)return kl();if(e.isNewtype)return hi(e.fields[0].type);let t=1;for(let n of e.fields){let r=hi(n.type);if(r===null)return null;t=Math.max(t,r)}return t}else if(qe(e)){let t=1;for(let n of e.variants)if(n.fields)for(let r of n.fields){let i=hi(r.type);if(i===null)return null;t=Math.max(t,i)}return t}else if(ln(e)){let t=1;for(let n of e.fields){let r=hi(n.type);if(r===null)return null;t=Math.max(t,r)}return t}else{if(te(e))return kl();if(_t(e))return kl()}return null}function vo(e){return z(e)?null:Pe(e)||Vt(e)||dn(e)||On(e)||Sn(e)||Rn(e)||Qe(e)||ht(e)||Nn(e)?0:Lr(e)?8:ds(e)||ms(e)?qi():mi(e)||ys(e)?8:gs(e)||hs(e)?16:vs(e)||Ts(e)?32:Es(e)||$s(e)?64:bs(e)?32:Cs(e)?64:at(e)?oE(e):st(e)?aE(e):ze(e)?e.isReferenceSemantics?qi():e.isNewtype?vo(e.fields[0].type):sE(e):qe(e)?lE(e):ln(e)?uE(e):te(e)||_t(e)?qi():null}function Hi(e,t){if(Wi(e))throw tn([{token:t,errorMessage:`Cannot use 'void' type here.
49
49
  Please consider use 'unit' type instead.
50
- `}])}function ji(e,t,n){if(!rn(e)||zo(e,n))return!1;if(t.has(e.id))return!0;t.add(e.id);try{for(let r of e.fields)if(Po(r.type,e,t,n))return!0;return!1}finally{t.delete(e.id)}}function Po(e,t,n,r){if(ze(e)&&e.id===t.id)return!0;if(ze(e)&&e.isReferenceSemantics)return ji(e,new Set(n),r);if(qe(e)){for(let i of e.variants)if(i.fields){for(let o of i.fields)if(Po(o.type,t,n,r))return!0}}if(z(e))return zo(e,r)?!1:e.resolvedConcreteType?Po(e.resolvedConcreteType,t,n,r):!0;if(at(e)||Rt(e))return Po(e.childType,t,n,r);if(st(e)){for(let i of e.fields)if(Po(i.type,t,n,r))return!0}if(ln(e)){for(let i of e.fields)if(Po(i.type,t,n,r))return!0}return ot(e)?!0:(_t(e),!1)}function Li(e,t){return t?e.id===t.id?!0:at(e)||Rt(e)||_t(e)?Li(e.childType,t):st(e)?e.fields.some(n=>Li(n.type,t)):ze(e)?e.fields.some(n=>Li(n.type,t)):ln(e)?e.fields.some(n=>Li(n.type,t)):qe(e)?e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>Li(i.type,t))}):te(e)?Li(e.return.type,t):!1:!1}var kc,Je=j(()=>{xe();Gt();ce();pn();ge();dt();Ae();Mr();kc=64});function To(e){return{[e]:!0}}function Kt(e,t){return(e==null?void 0:e[t])===!0}function cn(e){return e!==void 0&&(e.return===!0||e.escape===!0||e.break===!0||e.continue===!0)}function Fs(e){let t={};for(let n of e)n.return&&(t.return=!0),n.escape&&(t.escape=!0),n.break&&(t.break=!0),n.continue&&(t.continue=!0);return t}function dp(e){let t=[];return e.return&&t.push("return"),e.escape&&t.push("escape"),e.break&&t.push("break"),e.continue&&t.push("continue"),t.join("+")}function mt(e){switch(e.tag){case"Atom":return{...e,$:void 0};case"FnCall":return{...e,func:mt(e.func),args:e.args.map(mt),$:void 0}}}function S(e){return(e==null?void 0:e.tag)==="FnCall"}function H(e){return(e==null?void 0:e.tag)==="Atom"}function $n(e,t){return e.tag==="Atom"&&(typeof t=="string"?e.token.value===t:t.includes(e.token.value))}function Ia(e){return e.tag==="Atom"&&e.token.type==="operator"}function T(e,t,n){if(e.tag!=="FnCall"||e.func.tag!=="Atom")return!1;let r=e.func.token.value;return e.tag==="FnCall"&&e.func.tag==="Atom"&&(typeof t=="string"?r===t:t.includes(r))&&(n===void 0||e.args.length===n)}function He(e,t,n){if(!S(e))throw m({token:e.token,errorMessage:`Expected function call, got atom:
50
+ `}])}function ji(e,t,n){if(!rn(e)||zo(e,n))return!1;if(t.has(e.id))return!0;t.add(e.id);try{for(let r of e.fields)if(Po(r.type,e,t,n))return!0;return!1}finally{t.delete(e.id)}}function Po(e,t,n,r){if(ze(e)&&e.id===t.id)return!0;if(ze(e)&&e.isReferenceSemantics)return ji(e,new Set(n),r);if(qe(e)){for(let i of e.variants)if(i.fields){for(let o of i.fields)if(Po(o.type,t,n,r))return!0}}if(z(e))return zo(e,r)?!1:e.resolvedConcreteType?Po(e.resolvedConcreteType,t,n,r):!0;if(at(e)||Rt(e))return Po(e.childType,t,n,r);if(st(e)){for(let i of e.fields)if(Po(i.type,t,n,r))return!0}if(ln(e)){for(let i of e.fields)if(Po(i.type,t,n,r))return!0}return ot(e)?!0:(_t(e),!1)}function Ai(e,t){return t?e.id===t.id?!0:at(e)||Rt(e)||_t(e)?Ai(e.childType,t):st(e)?e.fields.some(n=>Ai(n.type,t)):ze(e)?e.fields.some(n=>Ai(n.type,t)):ln(e)?e.fields.some(n=>Ai(n.type,t)):qe(e)?e.variants.some(n=>{var r;return(r=n.fields)==null?void 0:r.some(i=>Ai(i.type,t))}):te(e)?Ai(e.return.type,t):!1:!1}var kc,Je=j(()=>{xe();Gt();ce();pn();ge();dt();Ae();Mr();kc=64});function To(e){return{[e]:!0}}function Kt(e,t){return(e==null?void 0:e[t])===!0}function cn(e){return e!==void 0&&(e.return===!0||e.escape===!0||e.break===!0||e.continue===!0)}function Fs(e){let t={};for(let n of e)n.return&&(t.return=!0),n.escape&&(t.escape=!0),n.break&&(t.break=!0),n.continue&&(t.continue=!0);return t}function dp(e){let t=[];return e.return&&t.push("return"),e.escape&&t.push("escape"),e.break&&t.push("break"),e.continue&&t.push("continue"),t.join("+")}function mt(e){switch(e.tag){case"Atom":return{...e,$:void 0};case"FnCall":return{...e,func:mt(e.func),args:e.args.map(mt),$:void 0}}}function S(e){return(e==null?void 0:e.tag)==="FnCall"}function H(e){return(e==null?void 0:e.tag)==="Atom"}function $n(e,t){return e.tag==="Atom"&&(typeof t=="string"?e.token.value===t:t.includes(e.token.value))}function Ia(e){return e.tag==="Atom"&&e.token.type==="operator"}function T(e,t,n){if(e.tag!=="FnCall"||e.func.tag!=="Atom")return!1;let r=e.func.token.value;return e.tag==="FnCall"&&e.func.tag==="Atom"&&(typeof t=="string"?r===t:t.includes(r))&&(n===void 0||e.args.length===n)}function He(e,t,n){if(!S(e))throw m({token:e.token,errorMessage:`Expected function call, got atom:
51
51
  ${L(e)}`});if(!T(e,t))throw m({token:e.token,errorMessage:`Expected function call of ${Array.isArray(t)?t.map(r=>`"${r}"`).join(" or "):`"${t}"`}, got:
52
52
  ${L(e)}`});if(n!==void 0&&e.args.length!==n)throw m({token:e.token,errorMessage:`Expected ${n} arguments, got ${e.args.length}:
53
- ${L(e)}`})}function Cl(e,t){if(e.tag!==t.tag)return!1;if(e.tag==="Atom"&&t.tag==="Atom")return e.token.value===t.token.value;if(e.tag==="FnCall"&&t.tag==="FnCall"){if(!Cl(e.func,t.func)||e.args.length!==t.args.length)return!1;for(let n=0;n<e.args.length;n++)if(!Cl(e.args[n],t.args[n]))return!1;return!0}return!1}function Sa(e){return!!(e.tag==="FnCall"&&e.isInfix&&e.func.tag==="Atom"&&e.func.token.type==="operator"&&e.args.length===2)}function L(e,t){let r={...{prettyPrint:!1,indentSize:2,maxLineLength:80,indentLevel:0},...t};return r.prettyPrint?Rr(e,r):Si(e)}function Si(e){let t="";switch(e.tag){case"Atom":{t=e.token.value;break}case"FnCall":{if(e.func.tag==="Atom"&&(e.func.token.type==="operator"||e.func.token.type===".")){if(e.args.length===1){e.func.token.value==="."?t=`${e.func.token.value}${Si(e.args[0])}`:t=`${e.func.token.value}(${Si(e.args[0])})`;break}else if(e.args.length===2&&e.isInfix){let i=Si(e.args[0]),o=Si(e.args[1]);i=Sa(e.args[0])||Ia(e.args[0])?`(${i})`:i,o=Sa(e.args[1])||Ia(e.args[1])?`(${o})`:o,e.func.token.value==="."?t=`(${i}.${o})`:t=`${i} ${e.func.token.value} ${o}`;break}}if(e.func.tag==="Atom"&&e.func.token.type==="identifier"&&e.func.token.value===D.tuple[0]){e.args.length===1?t=`(${Si(e.args[0])},)`:t=`(${e.args.map(i=>Si(i)).join(", ").trim()})`;break}let n=Si(e.func);n=Sa(e.func)||Ia(e.func)?`(${n})`:n;let r=e.args.map(i=>Si(i)).join(", ").trim();t=`${n}(${r})`;break}}return t}function Rr(e,t){let n=" ".repeat(t.indentLevel*t.indentSize),r={...t,indentLevel:t.indentLevel+1},i=" ".repeat(r.indentLevel*t.indentSize);switch(e.tag){case"Atom":return e.token.value;case"FnCall":{if(e.func.tag==="Atom"&&(e.func.token.type==="operator"||e.func.token.type===".")){if(e.args.length===1){if(e.func.token.value===".")return`${e.func.token.value}${Rr(e.args[0],t)}`;{let u=Rr(e.args[0],t);return`${e.func.token.value}(${u})`}}else if(e.args.length===2&&e.isInfix){let u=Rr(e.args[0],t),c=Rr(e.args[1],t);return u=Sa(e.args[0])||Ia(e.args[0])?`(${u})`:u,c=Sa(e.args[1])||Ia(e.args[1])?`(${c})`:c,e.func.token.value==="."?`(${u}.${c})`:`${u} ${e.func.token.value} ${c}`}}if(e.func.tag==="Atom"&&e.func.token.type==="identifier"&&e.func.token.value===D.tuple[0]){if(e.args.length===0)return"()";if(e.args.length===1)return`(${Rr(e.args[0],t)},)`;{let u=e.args.map(f=>Rr(f,t)),c=`(${u.join(", ")})`;return c.length<=t.maxLineLength?c:`(
53
+ ${L(e)}`})}function Cl(e,t){if(e.tag!==t.tag)return!1;if(e.tag==="Atom"&&t.tag==="Atom")return e.token.value===t.token.value;if(e.tag==="FnCall"&&t.tag==="FnCall"){if(!Cl(e.func,t.func)||e.args.length!==t.args.length)return!1;for(let n=0;n<e.args.length;n++)if(!Cl(e.args[n],t.args[n]))return!1;return!0}return!1}function Sa(e){return!!(e.tag==="FnCall"&&e.isInfix&&e.func.tag==="Atom"&&e.func.token.type==="operator"&&e.args.length===2)}function L(e,t){let r={...{prettyPrint:!1,indentSize:2,maxLineLength:80,indentLevel:0},...t};return r.prettyPrint?Rr(e,r):Ni(e)}function Ni(e){let t="";switch(e.tag){case"Atom":{t=e.token.value;break}case"FnCall":{if(e.func.tag==="Atom"&&(e.func.token.type==="operator"||e.func.token.type===".")){if(e.args.length===1){e.func.token.value==="."?t=`${e.func.token.value}${Ni(e.args[0])}`:t=`${e.func.token.value}(${Ni(e.args[0])})`;break}else if(e.args.length===2&&e.isInfix){let i=Ni(e.args[0]),o=Ni(e.args[1]);i=Sa(e.args[0])||Ia(e.args[0])?`(${i})`:i,o=Sa(e.args[1])||Ia(e.args[1])?`(${o})`:o,e.func.token.value==="."?t=`(${i}.${o})`:t=`${i} ${e.func.token.value} ${o}`;break}}if(e.func.tag==="Atom"&&e.func.token.type==="identifier"&&e.func.token.value===D.tuple[0]){e.args.length===1?t=`(${Ni(e.args[0])},)`:t=`(${e.args.map(i=>Ni(i)).join(", ").trim()})`;break}let n=Ni(e.func);n=Sa(e.func)||Ia(e.func)?`(${n})`:n;let r=e.args.map(i=>Ni(i)).join(", ").trim();t=`${n}(${r})`;break}}return t}function Rr(e,t){let n=" ".repeat(t.indentLevel*t.indentSize),r={...t,indentLevel:t.indentLevel+1},i=" ".repeat(r.indentLevel*t.indentSize);switch(e.tag){case"Atom":return e.token.value;case"FnCall":{if(e.func.tag==="Atom"&&(e.func.token.type==="operator"||e.func.token.type===".")){if(e.args.length===1){if(e.func.token.value===".")return`${e.func.token.value}${Rr(e.args[0],t)}`;{let u=Rr(e.args[0],t);return`${e.func.token.value}(${u})`}}else if(e.args.length===2&&e.isInfix){let u=Rr(e.args[0],t),c=Rr(e.args[1],t);return u=Sa(e.args[0])||Ia(e.args[0])?`(${u})`:u,c=Sa(e.args[1])||Ia(e.args[1])?`(${c})`:c,e.func.token.value==="."?`(${u}.${c})`:`${u} ${e.func.token.value} ${c}`}}if(e.func.tag==="Atom"&&e.func.token.type==="identifier"&&e.func.token.value===D.tuple[0]){if(e.args.length===0)return"()";if(e.args.length===1)return`(${Rr(e.args[0],t)},)`;{let u=e.args.map(f=>Rr(f,t)),c=`(${u.join(", ")})`;return c.length<=t.maxLineLength?c:`(
54
54
  ${i}${u.join(`,
55
55
  ${i}`)}
56
56
  ${n})`}}let o=e.func.tag==="Atom"?e.func.token.value:null,a=o&&[...D.begin,...D.cond,...D.match,...D.fn,...D.if,...D.while].includes(o),s=Rr(e.func,t);if(s=Sa(e.func)||Ia(e.func)?`(${s})`:s,e.args.length===0)return`${s}()`;if(!a){let u=e.args.map(f=>Rr(f,t)),c=`${s}(${u.join(", ")})`;if(c.length<=t.maxLineLength)return c}if(a){if(o===D.begin[0]){if(e.args.length===1){let c=Rr(e.args[0],t);if(c.length<=t.maxLineLength&&!c.includes(`
@@ -66,14 +66,14 @@ ${i}`)}
66
66
  ${n})`}}let l=e.args.map(u=>Rr(u,r));return`${s}(
67
67
  ${i}${l.join(`,
68
68
  ${i}`)}
69
- ${n})`}}return Si(e)}function Ft(e,t,n){if(!e.$)throw new Error(`Expected expression to be evaluated, but it is not:
69
+ ${n})`}}return Ni(e)}function Ft(e,t,n){if(!e.$)throw new Error(`Expected expression to be evaluated, but it is not:
70
70
  ${L(e)}`);let{env:r,type:i,value:o,originType:a}=e.$,s=r.modulePath,l=t&&ut(i);if(e.$.variableName){let f=ue(r,e.$.variableName);if(f.length>0){let _=f[f.length-1],d=_.isOwningTheRcValue?l:!1,g={..._,type:i,value:d?void 0:o?[o]:void 0,isCompileTimeOnly:d?!1:!!o,isOwningTheRcValue:d,isOwningTheSameRcValueAs:n};e.$.env=It(r,_,g),a||(e.$.originType=i);return}let{env:p}=Be({env:r,variable:{name:e.$.variableName,type:i,value:l?void 0:o?[o]:void 0,isCompileTimeOnly:l?!1:!!o,initializedAtToken:e.token,isOwningTheRcValue:l,isOwningTheSameRcValueAs:n,consumedAtToken:void 0,token:e.token},addToBeginBlockFrame:!0});a||(e.$.originType=i),e.$.env=p;return}let u=Zf(s),{env:c}=Be({env:r,variable:{name:u,type:i,value:l?void 0:o?[o]:void 0,isCompileTimeOnly:l?!1:!!o,initializedAtToken:e.token,isOwningTheRcValue:l,isOwningTheSameRcValueAs:n,consumedAtToken:void 0,token:e.token},addToBeginBlockFrame:!0});e.$.variableName=u,a||(e.$.originType=i),e.$.env=c}function Na(e,t){let n=e.frames.length-1,r=[];for(let i=0;i<t.length;i++){let o=t[i];if(!o.$)throw tn([{token:o.token,errorMessage:"Expected the body of the case to be evaluated, but it is not."}]);let a=o.$.env;r.push(a)}for(let i=0;i<r.length;i++)if(r[i].frames.length-1!==n)throw tn([{token:t[i].token,errorMessage:"Frame level is different for different cases."}]);for(let i=0;i<=n;i++){let o=i,a=e.frames[i],s=[...a.variables],l=[[]];s.forEach(f=>{l[0].push({consumedAtToken:f.consumedAtToken,initializedAtToken:f.initializedAtToken,type:f.type,isOwningTheRcValue:f.isOwningTheRcValue??!1})});for(let f=0;f<r.length;f++){let d=r[f].frames[i].variables;if(i!==n&&s.length!==d.length)if(d.length>s.length){let g=[...d].slice(s.length);if(g.every(h=>en(e.modulePath,h.name))){for(let v of g)s.push(v),l[0].push({consumedAtToken:void 0,initializedAtToken:v.initializedAtToken,type:v.type,isOwningTheRcValue:v.isOwningTheRcValue??!1});let h={...a,variables:[...s]};e={...e,frames:e.frames.map((v,E)=>E===i?h:v)}}else throw tn([{token:t[f].token,errorMessage:`Frame level ${i} has different number of values for different cases.`}])}else throw tn([{token:t[f].token,errorMessage:`Frame level ${i} has different number of values for different cases.`}]);for(let g=0;g<s.length;g++){let y=s[g],h=d[g];if(y.name!==h.name){if(en(e.modulePath,y.name)&&en(e.modulePath,h.name))continue;throw tn([{token:t[f].token,errorMessage:`Frame level ${i} has different variable names for different cases.`}])}}l.push([]),d.forEach(g=>{l[l.length-1].push({consumedAtToken:g.consumedAtToken,initializedAtToken:g.initializedAtToken,type:g.type,isOwningTheRcValue:g.isOwningTheRcValue??!1})})}let u=l.length,c=l[0].length;for(let f=0;f<c;f++){let p=s[f].name,_=[],d=[],g=[],y=[];for(let C=1;C<u;C++){let k=r[C-1].frames[o].variables;_.push(l[C][f].initializedAtToken),d.push(l[C][f].isOwningTheRcValue?k[f].token:void 0),g.push(l[C][f].consumedAtToken),y.push(l[C][f].type)}let h=_.map((C,w)=>({token:C,index:w})).filter(({token:C})=>!!C);if(h.length>1){let C=y[h[0].index],w=r[h[0].index];for(let k=1;k<h.length;k++){let b=y[h[k].index],A=r[h[k].index];if(z(C)&&z(b)){let I=C.resolvedConcreteType,N=b.resolvedConcreteType;if(I&&N&&!ie({type:I,env:w},{type:N,env:A}))throw tn([{token:t[h[0].index].token,errorMessage:`Variable "${p}" has type Impl(...) but different concrete types across branches.
71
71
  Impl(...) uses static dispatch and requires the same concrete type in all branches.
72
72
  Consider using Dyn(...) for dynamic dispatch if different concrete types are needed.`},{token:_[h[0].index],errorMessage:`First branch has concrete type: ${x(I)}`},{token:_[h[k].index],errorMessage:`Conflicting branch has concrete type: ${x(N)}`}])}if(C!==b&&!ie({type:C,env:w},{type:b,env:A}))throw tn([{token:t[h[0].index].token,errorMessage:`Variable "${p}" has incompatible types across different cases:`},{token:_[h[0].index],errorMessage:`First initialization: ${x(C)}`},{token:_[h[k].index],errorMessage:`Conflicting initialization: ${x(b)}`}])}}if(_.length===1){if(_[0]&&!s[f].initializedAtToken)throw tn([{token:s[f].token,errorMessage:`Variable "${s[f].name}" might not be initialized in all cases.`},{token:_[0],errorMessage:"Might be initialized here:"}])}else if(!s[f].initializedAtToken&&_.every(C=>C)){let C={...s[f],initializedAtToken:_[0]};e=It(e,s[f],C),s[f]=C}else{let C=_.filter(k=>!!k),w=_.filter(k=>!k);if(C.length>0&&w.length>0)throw tn(_.map((k,b)=>({errorMessage:(b===0?`Variable "${p}" might be initialized in some cases but not initialized in other cases:
73
73
  `:"")+(k?"Might be initialized here:":"Not initialized here:"),token:k??t[b].token})))}if(g.length===1){if(g[0]&&!s[f].consumedAtToken){let C={...s[f],consumedAtToken:g[0]};e=It(e,s[f],C),s[f]=C}}else if(!s[f].consumedAtToken&&g.every(C=>C)){let C={...s[f],consumedAtToken:g[0]};e=It(e,s[f],C),s[f]=C}else{let C=g.filter(k=>!!k),w=g.filter(k=>!k);if(C.length>0&&w.length>0)throw tn(g.map((k,b)=>({errorMessage:(b===0?`Variable "${p}" is consumed in some cases but not in other cases:
74
74
  `:"")+(k?"Consumed here:":"Not consumed here:"),token:k??t[b].token})))}if(!s[f].isOwningTheRcValue&&d.every(C=>C)){let C={...s[f],isOwningTheRcValue:!0,isOwningTheSameRcValueAs:void 0};e=It(e,s[f],C),s[f]=C}else{let C=d.filter(k=>!!k),w=d.filter(k=>!k);if(C.length>0&&w.length>0)throw tn(d.map((k,b)=>({errorMessage:(b===0?`Variable "${p}" might be holding the Rc value in some cases but not holding the Rc value in other cases:
75
- `:"")+(k?"Might be owning the Rc value here:":"Might be not owning the Rc value here:"),token:k??t[b].token})))}let v=s[f].id,E=[];for(let C=1;C<u;C++){let b=r[C-1].frames[o].variables[f];E.push(b.id)}if(E.some(C=>C!==v)){let C=Mo(e.modulePath,p),w={...s[f],id:C,isOwningTheSameRcValueAs:void 0};e=It(e,s[f],w),s[f]=w}}}return e}function Ni(e,t){e.$=t.$,e.args=t.args,e.func=t.func,e.isInfix=t.isInfix,e.tag=t.tag,e.token=t.token}function wl(e,t){S(e)||(e.tag=t.tag),Ni(e,t)}function Cr(e,t,n=!1){var a,s,l;if((a=e.$)!=null&&a.value&&Y((s=e.$)==null?void 0:s.value))return t;let r=(l=e.$)==null?void 0:l.variableName;if(!r)return t;let i=ue(t,r);if(i.length===0)throw tn([{token:e.token,errorMessage:`Variable "${r}" is not defined.`}]);let o=i[i.length-1];if(o.consumedAtToken&&!n){let u=`use of moved value: \`${r}\``;throw tn([{token:e.token,errorMessage:u},{token:o.consumedAtToken,errorMessage:"value moved here"}])}else t=It(t,o,{...o,consumedAtToken:e.token});return t}function Yn(e,t){var r;if(!e.$||!e.$.variableName)return;if(e.$.value){let i=e.$.variableName;if(i&&en(e.$.env.modulePath,i)&&ut(e.$.type)){let o=ue(e.$.env,i);if(o.length>0){let a=o[o.length-1];a.isOwningTheRcValue&&!a.consumedAtToken&&(e.$.env=It(e.$.env,a,{...a,consumedAtToken:e.token}))}}return}let n=e.$.variableName;if(!n)throw m({token:e.token,errorMessage:`Expression does not have a variable name to call ${F.___dup} on:
76
- ${L(e)}`});if(ut(e.$.type)){if(en(e.$.env.modulePath,n)&&!(H(e)&&e.token.value!==n)){let a=ue(e.$.env,n);if(a.length>0){let s=a[a.length-1];if(s.isOwningTheRcValue){s.consumedAtToken||(e.$.env=It(e.$.env,s,{...s,consumedAtToken:e.token}));return}}}let i=nr(`${F.___dup[0]}(${n})`),o=R({expr:i,env:e.$.env,context:{...t,expectedType:void 0}});if((r=o.$)!=null&&r.variableName){let a=ue(o.$.env,o.$.variableName);if(a.length>0){let s=a[a.length-1];s.consumedAtToken||(o.$.env=It(o.$.env,s,{...s,consumedAtToken:o.token}))}}e.$.deferredDupExpressions=[o],e.$.env=o.$.env}}function Bo(e,t){var o;let n=(o=e.$)==null?void 0:o.variableName;if(!n)return;let r=ue(t,n);if(r.length===0)throw tn([{token:e.token,errorMessage:`Variable "${n}" is not defined.`}]);let i=r[r.length-1];if(i.consumedAtToken){let a=`use of moved value: \`${n}\``;throw tn([{token:e.token,errorMessage:a},{token:i.consumedAtToken,errorMessage:"value moved here"}])}}var D,F,ce=j(()=>{ft();xe();Ke();Ci();pn();Qt();Ae();Je();yn();ge();D={comptime:["comptime"],runtime:["runtime"],ref:["ref"],forall:["forall","\u2200"],using:["using"],given:["given"],where:["where"],quote:["quote",":"],unquote:["unquote","#"],unquote_splicing:["unquote_splicing","...#"],return:["return"],recur:["recur"],fn:["fn"],unsafe_fn:["unsafe_fn"],escape:["escape"],extern:["extern"],cond:["cond"],type:["type"],match:["match"],test:["test"],struct:["struct"],object:["object"],newtype:["newtype"],enum:["enum"],union:["union"],module:["module"],trait:["trait"],impl:["impl"],Impl:["Impl"],begin:["begin"],module_begin:["module_begin"],import:["import"],export:["export"],open:["open"],clone:["clone","%"],break:["break"],continue:["continue"],while:["while"],if:["if"],op_and:["&&"],op_or:["||"],not:["not"],gensym:["gensym"],dyn:["dyn"],Dyn:["Dyn"],Fn:["Fn"],c_include:["c_include"],undefined:["undefined"],null:["null"],true:["true"],false:["false"],unique:["unique","^"],Ptr:["*"],Iso:["Iso"],Arc:["Arc"],Tuple:["Tuple"],Array:["Array"],Slice:["Slice"],Future:["Future"],Concrete:["Concrete"],Type:["Type"],Module:["Module"],Trait:["Trait"],ComptimeList:["ComptimeList"],tuple:["tuple"],array:["array"],comptime_list:["comptime_list"]},F={comptime_expect_error:["comptime_expect_error"],comptime_assert:["comptime_assert"],comptime_print:["comptime_print"],comptime_fn:["comptime_fn"],va_start:["va_start"],__yo_array_fill:["__yo_array_fill"],typeof:["typeof"],sizeof:["sizeof"],alignof:["alignof"],typeid:["typeid"],downcast:["downcast"],consume:["consume"],macro_expand:["macro_expand"],as:["as"],the:["the"],do:["do"],rc:"rc",__yo_thread_set_maximum_threads:["__yo_thread_set_maximum_threads"],__yo_ptr_add:["__yo_ptr_add"],__yo_ptr_sub:["__yo_ptr_sub"],__yo_ptr_diff:["__yo_ptr_diff"],__yo_ptr_eq:["__yo_ptr_eq"],__yo_ptr_neq:["__yo_ptr_neq"],__yo_ptr_lt:["__yo_ptr_lt"],__yo_ptr_lte:["__yo_ptr_lte"],__yo_ptr_gt:["__yo_ptr_gt"],__yo_ptr_gte:["__yo_ptr_gte"],__yo_address_of:["&"],__yo_ptr_deref:["__yo_ptr_deref"],__yo_ptr_set:["__yo_ptr_set"],__yo_slice_len:["__yo_slice_len"],__yo_slice_new:["__yo_slice_new"],__yo_as:["__yo_as"],__yo_expr_is_atom:["__yo_expr_is_atom"],__yo_expr_is_fn_call:["__yo_expr_is_fn_call"],__yo_expr_get_callee:["__yo_expr_get_callee"],__yo_expr_get_args:["__yo_expr_get_args"],__yo_expr_to_string:["__yo_expr_to_string"],__yo_expr_eq:["__yo_expr_eq"],__yo_comptime_list_car:["__yo_comptime_list_car"],__yo_comptime_list_cdr:["__yo_comptime_list_cdr"],__yo_comptime_list_cons:["__yo_comptime_list_cons"],__yo_comptime_list_append:["__yo_comptime_list_append"],__yo_comptime_list_length:["__yo_comptime_list_length"],__yo_comptime_list_element_type:["__yo_comptime_list_element_type"],__yo_comptime_int_add:["__yo_comptime_int_add"],__yo_comptime_int_sub:["__yo_comptime_int_sub"],__yo_comptime_int_mul:["__yo_comptime_int_mul"],__yo_comptime_int_div:["__yo_comptime_int_div"],__yo_comptime_int_mod:["__yo_comptime_int_mod"],__yo_comptime_int_eq:["__yo_comptime_int_eq"],__yo_comptime_int_neq:["__yo_comptime_int_neq"],__yo_comptime_int_lt:["__yo_comptime_int_lt"],__yo_comptime_int_lte:["__yo_comptime_int_lte"],__yo_comptime_int_gt:["__yo_comptime_int_gt"],__yo_comptime_int_gte:["__yo_comptime_int_gte"],__yo_comptime_int_bit_and:["__yo_comptime_int_bit_and"],__yo_comptime_int_bit_or:["__yo_comptime_int_bit_or"],__yo_comptime_int_bit_xor:["__yo_comptime_int_bit_xor"],__yo_comptime_int_shl:["__yo_comptime_int_shl"],__yo_comptime_int_shr:["__yo_comptime_int_shr"],__yo_comptime_int_neg:["__yo_comptime_int_neg"],__yo_comptime_int_bit_not:["__yo_comptime_int_bit_not"],__yo_comptime_int_to_comptime_string:["__yo_comptime_int_to_comptime_string"],__yo_comptime_float_add:["__yo_comptime_float_add"],__yo_comptime_float_sub:["__yo_comptime_float_sub"],__yo_comptime_float_mul:["__yo_comptime_float_mul"],__yo_comptime_float_div:["__yo_comptime_float_div"],__yo_comptime_float_eq:["__yo_comptime_float_eq"],__yo_comptime_float_neq:["__yo_comptime_float_neq"],__yo_comptime_float_lt:["__yo_comptime_float_lt"],__yo_comptime_float_lte:["__yo_comptime_float_lte"],__yo_comptime_float_gt:["__yo_comptime_float_gt"],__yo_comptime_float_gte:["__yo_comptime_float_gte"],__yo_comptime_float_neg:["__yo_comptime_float_neg"],__yo_comptime_float_to_comptime_string:["__yo_comptime_float_to_comptime_string"],__yo_comptime_u8_add:["__yo_comptime_u8_add"],__yo_comptime_u8_sub:["__yo_comptime_u8_sub"],__yo_comptime_u8_mul:["__yo_comptime_u8_mul"],__yo_comptime_u8_div:["__yo_comptime_u8_div"],__yo_comptime_u8_mod:["__yo_comptime_u8_mod"],__yo_comptime_u8_eq:["__yo_comptime_u8_eq"],__yo_comptime_u8_neq:["__yo_comptime_u8_neq"],__yo_comptime_u8_lt:["__yo_comptime_u8_lt"],__yo_comptime_u8_lte:["__yo_comptime_u8_lte"],__yo_comptime_u8_gt:["__yo_comptime_u8_gt"],__yo_comptime_u8_gte:["__yo_comptime_u8_gte"],__yo_comptime_u8_neg:["__yo_comptime_u8_neg"],__yo_comptime_u8_bit_and:["__yo_comptime_u8_bit_and"],__yo_comptime_u8_bit_or:["__yo_comptime_u8_bit_or"],__yo_comptime_u8_bit_xor:["__yo_comptime_u8_bit_xor"],__yo_comptime_u8_bit_not:["__yo_comptime_u8_bit_not"],__yo_comptime_u8_shl:["__yo_comptime_u8_shl"],__yo_comptime_u8_shr:["__yo_comptime_u8_shr"],__yo_comptime_u8_to_comptime_string:["__yo_comptime_u8_to_comptime_string"],__yo_comptime_i8_add:["__yo_comptime_i8_add"],__yo_comptime_i8_sub:["__yo_comptime_i8_sub"],__yo_comptime_i8_mul:["__yo_comptime_i8_mul"],__yo_comptime_i8_div:["__yo_comptime_i8_div"],__yo_comptime_i8_mod:["__yo_comptime_i8_mod"],__yo_comptime_i8_eq:["__yo_comptime_i8_eq"],__yo_comptime_i8_neq:["__yo_comptime_i8_neq"],__yo_comptime_i8_lt:["__yo_comptime_i8_lt"],__yo_comptime_i8_lte:["__yo_comptime_i8_lte"],__yo_comptime_i8_gt:["__yo_comptime_i8_gt"],__yo_comptime_i8_gte:["__yo_comptime_i8_gte"],__yo_comptime_i8_neg:["__yo_comptime_i8_neg"],__yo_comptime_i8_bit_and:["__yo_comptime_i8_bit_and"],__yo_comptime_i8_bit_or:["__yo_comptime_i8_bit_or"],__yo_comptime_i8_bit_xor:["__yo_comptime_i8_bit_xor"],__yo_comptime_i8_bit_not:["__yo_comptime_i8_bit_not"],__yo_comptime_i8_shl:["__yo_comptime_i8_shl"],__yo_comptime_i8_shr:["__yo_comptime_i8_shr"],__yo_comptime_i8_to_comptime_string:["__yo_comptime_i8_to_comptime_string"],__yo_comptime_u16_add:["__yo_comptime_u16_add"],__yo_comptime_u16_sub:["__yo_comptime_u16_sub"],__yo_comptime_u16_mul:["__yo_comptime_u16_mul"],__yo_comptime_u16_div:["__yo_comptime_u16_div"],__yo_comptime_u16_mod:["__yo_comptime_u16_mod"],__yo_comptime_u16_eq:["__yo_comptime_u16_eq"],__yo_comptime_u16_neq:["__yo_comptime_u16_neq"],__yo_comptime_u16_lt:["__yo_comptime_u16_lt"],__yo_comptime_u16_lte:["__yo_comptime_u16_lte"],__yo_comptime_u16_gt:["__yo_comptime_u16_gt"],__yo_comptime_u16_gte:["__yo_comptime_u16_gte"],__yo_comptime_u16_neg:["__yo_comptime_u16_neg"],__yo_comptime_u16_bit_and:["__yo_comptime_u16_bit_and"],__yo_comptime_u16_bit_or:["__yo_comptime_u16_bit_or"],__yo_comptime_u16_bit_xor:["__yo_comptime_u16_bit_xor"],__yo_comptime_u16_bit_not:["__yo_comptime_u16_bit_not"],__yo_comptime_u16_shl:["__yo_comptime_u16_shl"],__yo_comptime_u16_shr:["__yo_comptime_u16_shr"],__yo_comptime_u16_to_comptime_string:["__yo_comptime_u16_to_comptime_string"],__yo_comptime_i16_add:["__yo_comptime_i16_add"],__yo_comptime_i16_sub:["__yo_comptime_i16_sub"],__yo_comptime_i16_mul:["__yo_comptime_i16_mul"],__yo_comptime_i16_div:["__yo_comptime_i16_div"],__yo_comptime_i16_mod:["__yo_comptime_i16_mod"],__yo_comptime_i16_eq:["__yo_comptime_i16_eq"],__yo_comptime_i16_neq:["__yo_comptime_i16_neq"],__yo_comptime_i16_lt:["__yo_comptime_i16_lt"],__yo_comptime_i16_lte:["__yo_comptime_i16_lte"],__yo_comptime_i16_gt:["__yo_comptime_i16_gt"],__yo_comptime_i16_gte:["__yo_comptime_i16_gte"],__yo_comptime_i16_neg:["__yo_comptime_i16_neg"],__yo_comptime_i16_bit_and:["__yo_comptime_i16_bit_and"],__yo_comptime_i16_bit_or:["__yo_comptime_i16_bit_or"],__yo_comptime_i16_bit_xor:["__yo_comptime_i16_bit_xor"],__yo_comptime_i16_bit_not:["__yo_comptime_i16_bit_not"],__yo_comptime_i16_shl:["__yo_comptime_i16_shl"],__yo_comptime_i16_shr:["__yo_comptime_i16_shr"],__yo_comptime_i16_to_comptime_string:["__yo_comptime_i16_to_comptime_string"],__yo_comptime_u32_add:["__yo_comptime_u32_add"],__yo_comptime_u32_sub:["__yo_comptime_u32_sub"],__yo_comptime_u32_mul:["__yo_comptime_u32_mul"],__yo_comptime_u32_div:["__yo_comptime_u32_div"],__yo_comptime_u32_mod:["__yo_comptime_u32_mod"],__yo_comptime_u32_eq:["__yo_comptime_u32_eq"],__yo_comptime_u32_neq:["__yo_comptime_u32_neq"],__yo_comptime_u32_lt:["__yo_comptime_u32_lt"],__yo_comptime_u32_lte:["__yo_comptime_u32_lte"],__yo_comptime_u32_gt:["__yo_comptime_u32_gt"],__yo_comptime_u32_gte:["__yo_comptime_u32_gte"],__yo_comptime_u32_neg:["__yo_comptime_u32_neg"],__yo_comptime_u32_bit_and:["__yo_comptime_u32_bit_and"],__yo_comptime_u32_bit_or:["__yo_comptime_u32_bit_or"],__yo_comptime_u32_bit_xor:["__yo_comptime_u32_bit_xor"],__yo_comptime_u32_bit_not:["__yo_comptime_u32_bit_not"],__yo_comptime_u32_shl:["__yo_comptime_u32_shl"],__yo_comptime_u32_shr:["__yo_comptime_u32_shr"],__yo_comptime_u32_to_comptime_string:["__yo_comptime_u32_to_comptime_string"],__yo_comptime_i32_add:["__yo_comptime_i32_add"],__yo_comptime_i32_sub:["__yo_comptime_i32_sub"],__yo_comptime_i32_mul:["__yo_comptime_i32_mul"],__yo_comptime_i32_div:["__yo_comptime_i32_div"],__yo_comptime_i32_mod:["__yo_comptime_i32_mod"],__yo_comptime_i32_eq:["__yo_comptime_i32_eq"],__yo_comptime_i32_neq:["__yo_comptime_i32_neq"],__yo_comptime_i32_lt:["__yo_comptime_i32_lt"],__yo_comptime_i32_lte:["__yo_comptime_i32_lte"],__yo_comptime_i32_gt:["__yo_comptime_i32_gt"],__yo_comptime_i32_gte:["__yo_comptime_i32_gte"],__yo_comptime_i32_neg:["__yo_comptime_i32_neg"],__yo_comptime_i32_bit_and:["__yo_comptime_i32_bit_and"],__yo_comptime_i32_bit_or:["__yo_comptime_i32_bit_or"],__yo_comptime_i32_bit_xor:["__yo_comptime_i32_bit_xor"],__yo_comptime_i32_bit_not:["__yo_comptime_i32_bit_not"],__yo_comptime_i32_shl:["__yo_comptime_i32_shl"],__yo_comptime_i32_shr:["__yo_comptime_i32_shr"],__yo_comptime_i32_to_comptime_string:["__yo_comptime_i32_to_comptime_string"],__yo_comptime_u64_add:["__yo_comptime_u64_add"],__yo_comptime_u64_sub:["__yo_comptime_u64_sub"],__yo_comptime_u64_mul:["__yo_comptime_u64_mul"],__yo_comptime_u64_div:["__yo_comptime_u64_div"],__yo_comptime_u64_mod:["__yo_comptime_u64_mod"],__yo_comptime_u64_eq:["__yo_comptime_u64_eq"],__yo_comptime_u64_neq:["__yo_comptime_u64_neq"],__yo_comptime_u64_lt:["__yo_comptime_u64_lt"],__yo_comptime_u64_lte:["__yo_comptime_u64_lte"],__yo_comptime_u64_gt:["__yo_comptime_u64_gt"],__yo_comptime_u64_gte:["__yo_comptime_u64_gte"],__yo_comptime_u64_neg:["__yo_comptime_u64_neg"],__yo_comptime_u64_bit_and:["__yo_comptime_u64_bit_and"],__yo_comptime_u64_bit_or:["__yo_comptime_u64_bit_or"],__yo_comptime_u64_bit_xor:["__yo_comptime_u64_bit_xor"],__yo_comptime_u64_bit_not:["__yo_comptime_u64_bit_not"],__yo_comptime_u64_shl:["__yo_comptime_u64_shl"],__yo_comptime_u64_shr:["__yo_comptime_u64_shr"],__yo_comptime_u64_to_comptime_string:["__yo_comptime_u64_to_comptime_string"],__yo_comptime_i64_add:["__yo_comptime_i64_add"],__yo_comptime_i64_sub:["__yo_comptime_i64_sub"],__yo_comptime_i64_mul:["__yo_comptime_i64_mul"],__yo_comptime_i64_div:["__yo_comptime_i64_div"],__yo_comptime_i64_mod:["__yo_comptime_i64_mod"],__yo_comptime_i64_eq:["__yo_comptime_i64_eq"],__yo_comptime_i64_neq:["__yo_comptime_i64_neq"],__yo_comptime_i64_lt:["__yo_comptime_i64_lt"],__yo_comptime_i64_lte:["__yo_comptime_i64_lte"],__yo_comptime_i64_gt:["__yo_comptime_i64_gt"],__yo_comptime_i64_gte:["__yo_comptime_i64_gte"],__yo_comptime_i64_neg:["__yo_comptime_i64_neg"],__yo_comptime_i64_bit_and:["__yo_comptime_i64_bit_and"],__yo_comptime_i64_bit_or:["__yo_comptime_i64_bit_or"],__yo_comptime_i64_bit_xor:["__yo_comptime_i64_bit_xor"],__yo_comptime_i64_bit_not:["__yo_comptime_i64_bit_not"],__yo_comptime_i64_shl:["__yo_comptime_i64_shl"],__yo_comptime_i64_shr:["__yo_comptime_i64_shr"],__yo_comptime_i64_to_comptime_string:["__yo_comptime_i64_to_comptime_string"],__yo_comptime_usize_add:["__yo_comptime_usize_add"],__yo_comptime_usize_sub:["__yo_comptime_usize_sub"],__yo_comptime_usize_mul:["__yo_comptime_usize_mul"],__yo_comptime_usize_div:["__yo_comptime_usize_div"],__yo_comptime_usize_mod:["__yo_comptime_usize_mod"],__yo_comptime_usize_eq:["__yo_comptime_usize_eq"],__yo_comptime_usize_neq:["__yo_comptime_usize_neq"],__yo_comptime_usize_lt:["__yo_comptime_usize_lt"],__yo_comptime_usize_lte:["__yo_comptime_usize_lte"],__yo_comptime_usize_gt:["__yo_comptime_usize_gt"],__yo_comptime_usize_gte:["__yo_comptime_usize_gte"],__yo_comptime_usize_neg:["__yo_comptime_usize_neg"],__yo_comptime_usize_bit_and:["__yo_comptime_usize_bit_and"],__yo_comptime_usize_bit_or:["__yo_comptime_usize_bit_or"],__yo_comptime_usize_bit_xor:["__yo_comptime_usize_bit_xor"],__yo_comptime_usize_bit_not:["__yo_comptime_usize_bit_not"],__yo_comptime_usize_shl:["__yo_comptime_usize_shl"],__yo_comptime_usize_shr:["__yo_comptime_usize_shr"],__yo_comptime_usize_to_comptime_string:["__yo_comptime_usize_to_comptime_string"],__yo_comptime_isize_add:["__yo_comptime_isize_add"],__yo_comptime_isize_sub:["__yo_comptime_isize_sub"],__yo_comptime_isize_mul:["__yo_comptime_isize_mul"],__yo_comptime_isize_div:["__yo_comptime_isize_div"],__yo_comptime_isize_mod:["__yo_comptime_isize_mod"],__yo_comptime_isize_eq:["__yo_comptime_isize_eq"],__yo_comptime_isize_neq:["__yo_comptime_isize_neq"],__yo_comptime_isize_lt:["__yo_comptime_isize_lt"],__yo_comptime_isize_lte:["__yo_comptime_isize_lte"],__yo_comptime_isize_gt:["__yo_comptime_isize_gt"],__yo_comptime_isize_gte:["__yo_comptime_isize_gte"],__yo_comptime_isize_neg:["__yo_comptime_isize_neg"],__yo_comptime_isize_bit_and:["__yo_comptime_isize_bit_and"],__yo_comptime_isize_bit_or:["__yo_comptime_isize_bit_or"],__yo_comptime_isize_bit_xor:["__yo_comptime_isize_bit_xor"],__yo_comptime_isize_bit_not:["__yo_comptime_isize_bit_not"],__yo_comptime_isize_shl:["__yo_comptime_isize_shl"],__yo_comptime_isize_shr:["__yo_comptime_isize_shr"],__yo_comptime_isize_to_comptime_string:["__yo_comptime_isize_to_comptime_string"],__yo_comptime_f32_add:["__yo_comptime_f32_add"],__yo_comptime_f32_sub:["__yo_comptime_f32_sub"],__yo_comptime_f32_mul:["__yo_comptime_f32_mul"],__yo_comptime_f32_div:["__yo_comptime_f32_div"],__yo_comptime_f32_eq:["__yo_comptime_f32_eq"],__yo_comptime_f32_neq:["__yo_comptime_f32_neq"],__yo_comptime_f32_lt:["__yo_comptime_f32_lt"],__yo_comptime_f32_lte:["__yo_comptime_f32_lte"],__yo_comptime_f32_gt:["__yo_comptime_f32_gt"],__yo_comptime_f32_gte:["__yo_comptime_f32_gte"],__yo_comptime_f32_neg:["__yo_comptime_f32_neg"],__yo_comptime_f32_to_comptime_string:["__yo_comptime_f32_to_comptime_string"],__yo_comptime_f64_add:["__yo_comptime_f64_add"],__yo_comptime_f64_sub:["__yo_comptime_f64_sub"],__yo_comptime_f64_mul:["__yo_comptime_f64_mul"],__yo_comptime_f64_div:["__yo_comptime_f64_div"],__yo_comptime_f64_eq:["__yo_comptime_f64_eq"],__yo_comptime_f64_neq:["__yo_comptime_f64_neq"],__yo_comptime_f64_lt:["__yo_comptime_f64_lt"],__yo_comptime_f64_lte:["__yo_comptime_f64_lte"],__yo_comptime_f64_gt:["__yo_comptime_f64_gt"],__yo_comptime_f64_gte:["__yo_comptime_f64_gte"],__yo_comptime_f64_neg:["__yo_comptime_f64_neg"],__yo_comptime_f64_to_comptime_string:["__yo_comptime_f64_to_comptime_string"],__yo_comptime_bool_and:["__yo_comptime_bool_and"],__yo_comptime_bool_or:["__yo_comptime_bool_or"],__yo_comptime_bool_eq:["__yo_comptime_bool_eq"],__yo_comptime_bool_neq:["__yo_comptime_bool_neq"],__yo_comptime_bool_not:["__yo_comptime_bool_not"],__yo_comptime_bool_to_comptime_string:["__yo_comptime_bool_to_comptime_string"],__yo_comptime_string_concat:["__yo_comptime_string_concat"],__yo_comptime_string_eq:["__yo_comptime_string_eq"],__yo_comptime_string_neq:["__yo_comptime_string_neq"],__yo_comptime_string_lt:["__yo_comptime_string_lt"],__yo_comptime_string_lte:["__yo_comptime_string_lte"],__yo_comptime_string_gt:["__yo_comptime_string_gt"],__yo_comptime_string_gte:["__yo_comptime_string_gte"],__yo_comptime_string_length:["__yo_comptime_string_length"],__yo_comptime_string_to_upper:["__yo_comptime_string_to_upper"],__yo_comptime_string_to_lower:["__yo_comptime_string_to_lower"],__yo_comptime_string_slice:["__yo_comptime_string_slice"],__yo_type_to_comptime_string:["__yo_type_to_comptime_string"],__yo_type_contains_rc_type:["__yo_type_contains_rc_type"],__yo_type_can_form_rc_cycle:["__yo_type_can_form_rc_cycle"],__yo_are_types_compatible:["__yo_are_types_compatible"],__yo_type_impls:["__yo_type_impls"],__yo_var_print_info:["__yo_var_print_info"],__yo_var_is_owning_the_rc_value:["__yo_var_is_owning_the_rc_value"],__yo_var_has_other_aliases:["__yo_var_has_other_aliases"],__yo_op_add:["__yo_op_add"],__yo_op_sub:["__yo_op_sub"],__yo_op_mul:["__yo_op_mul"],__yo_op_div:["__yo_op_div"],__yo_op_mod:["__yo_op_mod"],__yo_op_neg:["__yo_op_neg"],__yo_op_eq:["__yo_op_eq"],__yo_op_neq:["__yo_op_neq"],__yo_op_lt:["__yo_op_lt"],__yo_op_lte:["__yo_op_lte"],__yo_op_gt:["__yo_op_gt"],__yo_op_gte:["__yo_op_gte"],__yo_op_not:["__yo_op_not"],__yo_op_bit_and:["__yo_op_bit_and"],__yo_op_bit_or:["__yo_op_bit_or"],__yo_op_bit_xor:["__yo_op_bit_xor"],__yo_op_bit_complement:["__yo_op_bit_complement"],__yo_op_bit_left_shift:["__yo_op_bit_left_shift"],__yo_op_bit_right_shift:["__yo_op_bit_right_shift"],c_include:["c_include"],panic:["panic"],__yo_decr_rc:["__yo_decr_rc"],__yo_incr_rc:["__yo_incr_rc"],__yo_decr_rc_atomic:["__yo_decr_rc_atomic"],__yo_incr_rc_atomic:["__yo_incr_rc_atomic"],__yo_rc_own:["__yo_rc_own"],__yo_iso_extract:["__yo_iso_extract"],__yo_iso_dispose:["__yo_iso_dispose"],__yo_arc_dispose:["__yo_arc_dispose"],__yo_gc_collect:["__yo_gc_collect"],__yo_dyn_drop:["__yo_dyn_drop"],__yo_dyn_dup:["__yo_dyn_dup"],__yo_sometype_drop:["__yo_sometype_drop"],__yo_sometype_dup:["__yo_sometype_dup"],___drop:["___drop"],___dispose:["___dispose"],___dup:["___dup"],dispose:["dispose"],__yo_drop_array_element:["__yo_drop_array_element"],__yo_dup_array_element:["__yo_dup_array_element"],__yo_drop_tuple_element:["__yo_drop_tuple_element"],__yo_dup_tuple_element:["__yo_dup_tuple_element"],__yo_noop:["__yo_noop"],__yo_return_self:["__yo_return_self"],__yo_ms_sleep:["__yo_ms_sleep"],__yo_getrandom:["__yo_getrandom"],__yo_arc4random_buf:["__yo_arc4random_buf"],__yo_bcrypt_gen_random:["__yo_bcrypt_gen_random"],__yo_maybe_uninit_new:["__yo_maybe_uninit_new"],__yo_maybe_uninit_as_ptr:["__yo_maybe_uninit_as_ptr"],__yo_maybe_uninit_assume_init:["__yo_maybe_uninit_assume_init"],__yo_process_platform:["__yo_process_platform"],__yo_process_arch:["__yo_process_arch"],__yo_build_project:["__yo_build_project"],__yo_build_executable:["__yo_build_executable"],__yo_build_static_library:["__yo_build_static_library"],__yo_build_shared_library:["__yo_build_shared_library"],__yo_build_test:["__yo_build_test"],__yo_build_run:["__yo_build_run"],__yo_build_step:["__yo_build_step"],__yo_build_step_depend_on:["__yo_build_step_depend_on"],__yo_build_link:["__yo_build_link"],__yo_build_link_system_library:["__yo_build_link_system_library"],__yo_build_target_host:["__yo_build_target_host"],__yo_build_target_parse:["__yo_build_target_parse"],__yo_build_dependency:["__yo_build_dependency"],__yo_build_path_dependency:["__yo_build_path_dependency"],__yo_build_system_library:["__yo_build_system_library"],__yo_build_option:["__yo_build_option"],__yo_build_dep_artifact:["__yo_build_dep_artifact"]}});function Go(e,t,n){if(ze(e)){if(e.isReferenceSemantics)return!1;if(n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Go(i.type,t,n));return n.delete(e.id),r}if(st(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Go(i.type,t,n));return n.delete(e.id),r}if(qe(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.variants.every(i=>(i.fields??[]).every(o=>Go(o.type,t,n)));return n.delete(e.id),r}return at(e)||Rt(e)||_t(e)?Go(e.childType,t,n):hi(e,t)}function Wo(e,t,n){if(ze(e)){if(e.isReferenceSemantics||n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Wo(i.type,t,n));return n.delete(e.id),r}if(st(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Wo(i.type,t,n));return n.delete(e.id),r}if(qe(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.variants.every(i=>(i.fields??[]).every(o=>Wo(o.type,t,n)));return n.delete(e.id),r}return at(e)||Rt(e)||_t(e)?Wo(e.childType,t,n):Ki(e,t)}function mp(e,t,n,r){let i=nr(e),o=R({expr:i,env:n,context:{...r,SelfType:t,forceCompileTimeBindings:!1}});if(!o.$)throw new Error(`Failed to evaluate auto-generated expression: ${L(i)}`);return{expr:o,env:o.$.env}}function xa({label:e,functionSignature:t,SelfType:n,env:r,context:i}){let{expr:o,env:a}=mp(t,n,r,i);if(S(o)&&o.$&&o.$.value&&Y(o.$.value)&&te(o.$.value.value)){let s=o.$.value.value,l={label:e,type:s,assignedValue:void 0,exprs:{expr:o,labelExpr:o.args[0],typeExpr:void 0,defaultValueExpr:void 0,assignedValueExpr:void 0}};if(n.trait){let u=n.trait.fields.findIndex(c=>c.label===e);u>=0?n.trait.fields[u]=l:n.trait.fields.push(l)}}return a}function Pr({label:e,functionCode:t,SelfType:n,env:r,context:i}){let{expr:o,env:a}=mp(t,n,r,i);if(S(o)&&o.$&&o.$.value&&$e(o.$.value)){o.$.value.funcId+=e,o.$.value.funcName=e;let s={label:e,type:o.$.type,assignedValue:o.$.value,exprs:{expr:o,labelExpr:o.args[0],typeExpr:void 0,defaultValueExpr:void 0,assignedValueExpr:o}};if(n.trait){let l=n.trait.fields.findIndex(u=>u.label===e);l>=0?n.trait.fields[l]=s:n.trait.fields.push(s)}}return a}function cE(e){return e.replace(/[^a-zA-Z0-9_]/g,t=>`_u${t.charCodeAt(0)}_`)}function fE(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Fc(e,t){if(e.length===0)return{destructuringExpr:"",callsExpr:""};let n=[],r=[];for(let i of e)if(fE(i)){let o=Nt("field_"+i);n.push(`${i} : ${o}`),r.push(`(${t})(${o});`)}else{let o=Nt("field_"+cE(i));n.push(`(${i}) : ${o}`),r.push(`(${t})(${o});`)}return{destructuringExpr:`{ ${n.join(", ")} } := ${an};`,callsExpr:r.join(`
75
+ `:"")+(k?"Might be owning the Rc value here:":"Might be not owning the Rc value here:"),token:k??t[b].token})))}let v=s[f].id,E=[];for(let C=1;C<u;C++){let b=r[C-1].frames[o].variables[f];E.push(b.id)}if(E.some(C=>C!==v)){let C=Mo(e.modulePath,p),w={...s[f],id:C,isOwningTheSameRcValueAs:void 0};e=It(e,s[f],w),s[f]=w}}}return e}function xi(e,t){e.$=t.$,e.args=t.args,e.func=t.func,e.isInfix=t.isInfix,e.tag=t.tag,e.token=t.token}function wl(e,t){S(e)||(e.tag=t.tag),xi(e,t)}function Cr(e,t,n=!1){var a,s,l;if((a=e.$)!=null&&a.value&&Y((s=e.$)==null?void 0:s.value))return t;let r=(l=e.$)==null?void 0:l.variableName;if(!r)return t;let i=ue(t,r);if(i.length===0)throw tn([{token:e.token,errorMessage:`Variable "${r}" is not defined.`}]);let o=i[i.length-1];if(o.consumedAtToken&&!n){let u=`use of moved value: \`${r}\``;throw tn([{token:e.token,errorMessage:u},{token:o.consumedAtToken,errorMessage:"value moved here"}])}else t=It(t,o,{...o,consumedAtToken:e.token});return t}function Yn(e,t){var r;if(!e.$||!e.$.variableName)return;if(e.$.value){let i=e.$.variableName;if(i&&en(e.$.env.modulePath,i)&&ut(e.$.type)){let o=ue(e.$.env,i);if(o.length>0){let a=o[o.length-1];a.isOwningTheRcValue&&!a.consumedAtToken&&(e.$.env=It(e.$.env,a,{...a,consumedAtToken:e.token}))}}return}let n=e.$.variableName;if(!n)throw m({token:e.token,errorMessage:`Expression does not have a variable name to call ${F.___dup} on:
76
+ ${L(e)}`});if(ut(e.$.type)){if(en(e.$.env.modulePath,n)&&!(H(e)&&e.token.value!==n)){let a=ue(e.$.env,n);if(a.length>0){let s=a[a.length-1];if(s.isOwningTheRcValue){s.consumedAtToken||(e.$.env=It(e.$.env,s,{...s,consumedAtToken:e.token}));return}}}let i=nr(`${F.___dup[0]}(${n})`),o=R({expr:i,env:e.$.env,context:{...t,expectedType:void 0}});if((r=o.$)!=null&&r.variableName){let a=ue(o.$.env,o.$.variableName);if(a.length>0){let s=a[a.length-1];s.consumedAtToken||(o.$.env=It(o.$.env,s,{...s,consumedAtToken:o.token}))}}e.$.deferredDupExpressions=[o],e.$.env=o.$.env}}function Bo(e,t){var o;let n=(o=e.$)==null?void 0:o.variableName;if(!n)return;let r=ue(t,n);if(r.length===0)throw tn([{token:e.token,errorMessage:`Variable "${n}" is not defined.`}]);let i=r[r.length-1];if(i.consumedAtToken){let a=`use of moved value: \`${n}\``;throw tn([{token:e.token,errorMessage:a},{token:i.consumedAtToken,errorMessage:"value moved here"}])}}var D,F,ce=j(()=>{ft();xe();Ke();ki();pn();Qt();Ae();Je();yn();ge();D={comptime:["comptime"],runtime:["runtime"],ref:["ref"],forall:["forall","\u2200"],using:["using"],given:["given"],where:["where"],quote:["quote",":"],unquote:["unquote","#"],unquote_splicing:["unquote_splicing","...#"],return:["return"],recur:["recur"],fn:["fn"],unsafe_fn:["unsafe_fn"],escape:["escape"],extern:["extern"],cond:["cond"],type:["type"],match:["match"],test:["test"],struct:["struct"],object:["object"],newtype:["newtype"],enum:["enum"],union:["union"],module:["module"],trait:["trait"],impl:["impl"],Impl:["Impl"],begin:["begin"],module_begin:["module_begin"],import:["import"],export:["export"],open:["open"],clone:["clone","%"],break:["break"],continue:["continue"],while:["while"],if:["if"],op_and:["&&"],op_or:["||"],not:["not"],gensym:["gensym"],dyn:["dyn"],Dyn:["Dyn"],Fn:["Fn"],c_include:["c_include"],undefined:["undefined"],null:["null"],true:["true"],false:["false"],unique:["unique","^"],Ptr:["*"],Iso:["Iso"],Arc:["Arc"],Tuple:["Tuple"],Array:["Array"],Slice:["Slice"],Future:["Future"],Concrete:["Concrete"],Type:["Type"],Module:["Module"],Trait:["Trait"],ComptimeList:["ComptimeList"],tuple:["tuple"],array:["array"],comptime_list:["comptime_list"]},F={comptime_expect_error:["comptime_expect_error"],comptime_assert:["comptime_assert"],comptime_print:["comptime_print"],comptime_fn:["comptime_fn"],va_start:["va_start"],__yo_array_fill:["__yo_array_fill"],typeof:["typeof"],sizeof:["sizeof"],alignof:["alignof"],typeid:["typeid"],downcast:["downcast"],consume:["consume"],macro_expand:["macro_expand"],as:["as"],the:["the"],do:["do"],rc:"rc",__yo_thread_set_maximum_threads:["__yo_thread_set_maximum_threads"],__yo_ptr_add:["__yo_ptr_add"],__yo_ptr_sub:["__yo_ptr_sub"],__yo_ptr_diff:["__yo_ptr_diff"],__yo_ptr_eq:["__yo_ptr_eq"],__yo_ptr_neq:["__yo_ptr_neq"],__yo_ptr_lt:["__yo_ptr_lt"],__yo_ptr_lte:["__yo_ptr_lte"],__yo_ptr_gt:["__yo_ptr_gt"],__yo_ptr_gte:["__yo_ptr_gte"],__yo_address_of:["&"],__yo_ptr_deref:["__yo_ptr_deref"],__yo_ptr_set:["__yo_ptr_set"],__yo_slice_len:["__yo_slice_len"],__yo_slice_new:["__yo_slice_new"],__yo_as:["__yo_as"],__yo_expr_is_atom:["__yo_expr_is_atom"],__yo_expr_is_fn_call:["__yo_expr_is_fn_call"],__yo_expr_get_callee:["__yo_expr_get_callee"],__yo_expr_get_args:["__yo_expr_get_args"],__yo_expr_to_string:["__yo_expr_to_string"],__yo_expr_eq:["__yo_expr_eq"],__yo_comptime_list_car:["__yo_comptime_list_car"],__yo_comptime_list_cdr:["__yo_comptime_list_cdr"],__yo_comptime_list_cons:["__yo_comptime_list_cons"],__yo_comptime_list_append:["__yo_comptime_list_append"],__yo_comptime_list_length:["__yo_comptime_list_length"],__yo_comptime_list_element_type:["__yo_comptime_list_element_type"],__yo_comptime_int_add:["__yo_comptime_int_add"],__yo_comptime_int_sub:["__yo_comptime_int_sub"],__yo_comptime_int_mul:["__yo_comptime_int_mul"],__yo_comptime_int_div:["__yo_comptime_int_div"],__yo_comptime_int_mod:["__yo_comptime_int_mod"],__yo_comptime_int_eq:["__yo_comptime_int_eq"],__yo_comptime_int_neq:["__yo_comptime_int_neq"],__yo_comptime_int_lt:["__yo_comptime_int_lt"],__yo_comptime_int_lte:["__yo_comptime_int_lte"],__yo_comptime_int_gt:["__yo_comptime_int_gt"],__yo_comptime_int_gte:["__yo_comptime_int_gte"],__yo_comptime_int_bit_and:["__yo_comptime_int_bit_and"],__yo_comptime_int_bit_or:["__yo_comptime_int_bit_or"],__yo_comptime_int_bit_xor:["__yo_comptime_int_bit_xor"],__yo_comptime_int_shl:["__yo_comptime_int_shl"],__yo_comptime_int_shr:["__yo_comptime_int_shr"],__yo_comptime_int_neg:["__yo_comptime_int_neg"],__yo_comptime_int_bit_not:["__yo_comptime_int_bit_not"],__yo_comptime_int_to_comptime_string:["__yo_comptime_int_to_comptime_string"],__yo_comptime_float_add:["__yo_comptime_float_add"],__yo_comptime_float_sub:["__yo_comptime_float_sub"],__yo_comptime_float_mul:["__yo_comptime_float_mul"],__yo_comptime_float_div:["__yo_comptime_float_div"],__yo_comptime_float_eq:["__yo_comptime_float_eq"],__yo_comptime_float_neq:["__yo_comptime_float_neq"],__yo_comptime_float_lt:["__yo_comptime_float_lt"],__yo_comptime_float_lte:["__yo_comptime_float_lte"],__yo_comptime_float_gt:["__yo_comptime_float_gt"],__yo_comptime_float_gte:["__yo_comptime_float_gte"],__yo_comptime_float_neg:["__yo_comptime_float_neg"],__yo_comptime_float_to_comptime_string:["__yo_comptime_float_to_comptime_string"],__yo_comptime_u8_add:["__yo_comptime_u8_add"],__yo_comptime_u8_sub:["__yo_comptime_u8_sub"],__yo_comptime_u8_mul:["__yo_comptime_u8_mul"],__yo_comptime_u8_div:["__yo_comptime_u8_div"],__yo_comptime_u8_mod:["__yo_comptime_u8_mod"],__yo_comptime_u8_eq:["__yo_comptime_u8_eq"],__yo_comptime_u8_neq:["__yo_comptime_u8_neq"],__yo_comptime_u8_lt:["__yo_comptime_u8_lt"],__yo_comptime_u8_lte:["__yo_comptime_u8_lte"],__yo_comptime_u8_gt:["__yo_comptime_u8_gt"],__yo_comptime_u8_gte:["__yo_comptime_u8_gte"],__yo_comptime_u8_neg:["__yo_comptime_u8_neg"],__yo_comptime_u8_bit_and:["__yo_comptime_u8_bit_and"],__yo_comptime_u8_bit_or:["__yo_comptime_u8_bit_or"],__yo_comptime_u8_bit_xor:["__yo_comptime_u8_bit_xor"],__yo_comptime_u8_bit_not:["__yo_comptime_u8_bit_not"],__yo_comptime_u8_shl:["__yo_comptime_u8_shl"],__yo_comptime_u8_shr:["__yo_comptime_u8_shr"],__yo_comptime_u8_to_comptime_string:["__yo_comptime_u8_to_comptime_string"],__yo_comptime_i8_add:["__yo_comptime_i8_add"],__yo_comptime_i8_sub:["__yo_comptime_i8_sub"],__yo_comptime_i8_mul:["__yo_comptime_i8_mul"],__yo_comptime_i8_div:["__yo_comptime_i8_div"],__yo_comptime_i8_mod:["__yo_comptime_i8_mod"],__yo_comptime_i8_eq:["__yo_comptime_i8_eq"],__yo_comptime_i8_neq:["__yo_comptime_i8_neq"],__yo_comptime_i8_lt:["__yo_comptime_i8_lt"],__yo_comptime_i8_lte:["__yo_comptime_i8_lte"],__yo_comptime_i8_gt:["__yo_comptime_i8_gt"],__yo_comptime_i8_gte:["__yo_comptime_i8_gte"],__yo_comptime_i8_neg:["__yo_comptime_i8_neg"],__yo_comptime_i8_bit_and:["__yo_comptime_i8_bit_and"],__yo_comptime_i8_bit_or:["__yo_comptime_i8_bit_or"],__yo_comptime_i8_bit_xor:["__yo_comptime_i8_bit_xor"],__yo_comptime_i8_bit_not:["__yo_comptime_i8_bit_not"],__yo_comptime_i8_shl:["__yo_comptime_i8_shl"],__yo_comptime_i8_shr:["__yo_comptime_i8_shr"],__yo_comptime_i8_to_comptime_string:["__yo_comptime_i8_to_comptime_string"],__yo_comptime_u16_add:["__yo_comptime_u16_add"],__yo_comptime_u16_sub:["__yo_comptime_u16_sub"],__yo_comptime_u16_mul:["__yo_comptime_u16_mul"],__yo_comptime_u16_div:["__yo_comptime_u16_div"],__yo_comptime_u16_mod:["__yo_comptime_u16_mod"],__yo_comptime_u16_eq:["__yo_comptime_u16_eq"],__yo_comptime_u16_neq:["__yo_comptime_u16_neq"],__yo_comptime_u16_lt:["__yo_comptime_u16_lt"],__yo_comptime_u16_lte:["__yo_comptime_u16_lte"],__yo_comptime_u16_gt:["__yo_comptime_u16_gt"],__yo_comptime_u16_gte:["__yo_comptime_u16_gte"],__yo_comptime_u16_neg:["__yo_comptime_u16_neg"],__yo_comptime_u16_bit_and:["__yo_comptime_u16_bit_and"],__yo_comptime_u16_bit_or:["__yo_comptime_u16_bit_or"],__yo_comptime_u16_bit_xor:["__yo_comptime_u16_bit_xor"],__yo_comptime_u16_bit_not:["__yo_comptime_u16_bit_not"],__yo_comptime_u16_shl:["__yo_comptime_u16_shl"],__yo_comptime_u16_shr:["__yo_comptime_u16_shr"],__yo_comptime_u16_to_comptime_string:["__yo_comptime_u16_to_comptime_string"],__yo_comptime_i16_add:["__yo_comptime_i16_add"],__yo_comptime_i16_sub:["__yo_comptime_i16_sub"],__yo_comptime_i16_mul:["__yo_comptime_i16_mul"],__yo_comptime_i16_div:["__yo_comptime_i16_div"],__yo_comptime_i16_mod:["__yo_comptime_i16_mod"],__yo_comptime_i16_eq:["__yo_comptime_i16_eq"],__yo_comptime_i16_neq:["__yo_comptime_i16_neq"],__yo_comptime_i16_lt:["__yo_comptime_i16_lt"],__yo_comptime_i16_lte:["__yo_comptime_i16_lte"],__yo_comptime_i16_gt:["__yo_comptime_i16_gt"],__yo_comptime_i16_gte:["__yo_comptime_i16_gte"],__yo_comptime_i16_neg:["__yo_comptime_i16_neg"],__yo_comptime_i16_bit_and:["__yo_comptime_i16_bit_and"],__yo_comptime_i16_bit_or:["__yo_comptime_i16_bit_or"],__yo_comptime_i16_bit_xor:["__yo_comptime_i16_bit_xor"],__yo_comptime_i16_bit_not:["__yo_comptime_i16_bit_not"],__yo_comptime_i16_shl:["__yo_comptime_i16_shl"],__yo_comptime_i16_shr:["__yo_comptime_i16_shr"],__yo_comptime_i16_to_comptime_string:["__yo_comptime_i16_to_comptime_string"],__yo_comptime_u32_add:["__yo_comptime_u32_add"],__yo_comptime_u32_sub:["__yo_comptime_u32_sub"],__yo_comptime_u32_mul:["__yo_comptime_u32_mul"],__yo_comptime_u32_div:["__yo_comptime_u32_div"],__yo_comptime_u32_mod:["__yo_comptime_u32_mod"],__yo_comptime_u32_eq:["__yo_comptime_u32_eq"],__yo_comptime_u32_neq:["__yo_comptime_u32_neq"],__yo_comptime_u32_lt:["__yo_comptime_u32_lt"],__yo_comptime_u32_lte:["__yo_comptime_u32_lte"],__yo_comptime_u32_gt:["__yo_comptime_u32_gt"],__yo_comptime_u32_gte:["__yo_comptime_u32_gte"],__yo_comptime_u32_neg:["__yo_comptime_u32_neg"],__yo_comptime_u32_bit_and:["__yo_comptime_u32_bit_and"],__yo_comptime_u32_bit_or:["__yo_comptime_u32_bit_or"],__yo_comptime_u32_bit_xor:["__yo_comptime_u32_bit_xor"],__yo_comptime_u32_bit_not:["__yo_comptime_u32_bit_not"],__yo_comptime_u32_shl:["__yo_comptime_u32_shl"],__yo_comptime_u32_shr:["__yo_comptime_u32_shr"],__yo_comptime_u32_to_comptime_string:["__yo_comptime_u32_to_comptime_string"],__yo_comptime_i32_add:["__yo_comptime_i32_add"],__yo_comptime_i32_sub:["__yo_comptime_i32_sub"],__yo_comptime_i32_mul:["__yo_comptime_i32_mul"],__yo_comptime_i32_div:["__yo_comptime_i32_div"],__yo_comptime_i32_mod:["__yo_comptime_i32_mod"],__yo_comptime_i32_eq:["__yo_comptime_i32_eq"],__yo_comptime_i32_neq:["__yo_comptime_i32_neq"],__yo_comptime_i32_lt:["__yo_comptime_i32_lt"],__yo_comptime_i32_lte:["__yo_comptime_i32_lte"],__yo_comptime_i32_gt:["__yo_comptime_i32_gt"],__yo_comptime_i32_gte:["__yo_comptime_i32_gte"],__yo_comptime_i32_neg:["__yo_comptime_i32_neg"],__yo_comptime_i32_bit_and:["__yo_comptime_i32_bit_and"],__yo_comptime_i32_bit_or:["__yo_comptime_i32_bit_or"],__yo_comptime_i32_bit_xor:["__yo_comptime_i32_bit_xor"],__yo_comptime_i32_bit_not:["__yo_comptime_i32_bit_not"],__yo_comptime_i32_shl:["__yo_comptime_i32_shl"],__yo_comptime_i32_shr:["__yo_comptime_i32_shr"],__yo_comptime_i32_to_comptime_string:["__yo_comptime_i32_to_comptime_string"],__yo_comptime_u64_add:["__yo_comptime_u64_add"],__yo_comptime_u64_sub:["__yo_comptime_u64_sub"],__yo_comptime_u64_mul:["__yo_comptime_u64_mul"],__yo_comptime_u64_div:["__yo_comptime_u64_div"],__yo_comptime_u64_mod:["__yo_comptime_u64_mod"],__yo_comptime_u64_eq:["__yo_comptime_u64_eq"],__yo_comptime_u64_neq:["__yo_comptime_u64_neq"],__yo_comptime_u64_lt:["__yo_comptime_u64_lt"],__yo_comptime_u64_lte:["__yo_comptime_u64_lte"],__yo_comptime_u64_gt:["__yo_comptime_u64_gt"],__yo_comptime_u64_gte:["__yo_comptime_u64_gte"],__yo_comptime_u64_neg:["__yo_comptime_u64_neg"],__yo_comptime_u64_bit_and:["__yo_comptime_u64_bit_and"],__yo_comptime_u64_bit_or:["__yo_comptime_u64_bit_or"],__yo_comptime_u64_bit_xor:["__yo_comptime_u64_bit_xor"],__yo_comptime_u64_bit_not:["__yo_comptime_u64_bit_not"],__yo_comptime_u64_shl:["__yo_comptime_u64_shl"],__yo_comptime_u64_shr:["__yo_comptime_u64_shr"],__yo_comptime_u64_to_comptime_string:["__yo_comptime_u64_to_comptime_string"],__yo_comptime_i64_add:["__yo_comptime_i64_add"],__yo_comptime_i64_sub:["__yo_comptime_i64_sub"],__yo_comptime_i64_mul:["__yo_comptime_i64_mul"],__yo_comptime_i64_div:["__yo_comptime_i64_div"],__yo_comptime_i64_mod:["__yo_comptime_i64_mod"],__yo_comptime_i64_eq:["__yo_comptime_i64_eq"],__yo_comptime_i64_neq:["__yo_comptime_i64_neq"],__yo_comptime_i64_lt:["__yo_comptime_i64_lt"],__yo_comptime_i64_lte:["__yo_comptime_i64_lte"],__yo_comptime_i64_gt:["__yo_comptime_i64_gt"],__yo_comptime_i64_gte:["__yo_comptime_i64_gte"],__yo_comptime_i64_neg:["__yo_comptime_i64_neg"],__yo_comptime_i64_bit_and:["__yo_comptime_i64_bit_and"],__yo_comptime_i64_bit_or:["__yo_comptime_i64_bit_or"],__yo_comptime_i64_bit_xor:["__yo_comptime_i64_bit_xor"],__yo_comptime_i64_bit_not:["__yo_comptime_i64_bit_not"],__yo_comptime_i64_shl:["__yo_comptime_i64_shl"],__yo_comptime_i64_shr:["__yo_comptime_i64_shr"],__yo_comptime_i64_to_comptime_string:["__yo_comptime_i64_to_comptime_string"],__yo_comptime_usize_add:["__yo_comptime_usize_add"],__yo_comptime_usize_sub:["__yo_comptime_usize_sub"],__yo_comptime_usize_mul:["__yo_comptime_usize_mul"],__yo_comptime_usize_div:["__yo_comptime_usize_div"],__yo_comptime_usize_mod:["__yo_comptime_usize_mod"],__yo_comptime_usize_eq:["__yo_comptime_usize_eq"],__yo_comptime_usize_neq:["__yo_comptime_usize_neq"],__yo_comptime_usize_lt:["__yo_comptime_usize_lt"],__yo_comptime_usize_lte:["__yo_comptime_usize_lte"],__yo_comptime_usize_gt:["__yo_comptime_usize_gt"],__yo_comptime_usize_gte:["__yo_comptime_usize_gte"],__yo_comptime_usize_neg:["__yo_comptime_usize_neg"],__yo_comptime_usize_bit_and:["__yo_comptime_usize_bit_and"],__yo_comptime_usize_bit_or:["__yo_comptime_usize_bit_or"],__yo_comptime_usize_bit_xor:["__yo_comptime_usize_bit_xor"],__yo_comptime_usize_bit_not:["__yo_comptime_usize_bit_not"],__yo_comptime_usize_shl:["__yo_comptime_usize_shl"],__yo_comptime_usize_shr:["__yo_comptime_usize_shr"],__yo_comptime_usize_to_comptime_string:["__yo_comptime_usize_to_comptime_string"],__yo_comptime_isize_add:["__yo_comptime_isize_add"],__yo_comptime_isize_sub:["__yo_comptime_isize_sub"],__yo_comptime_isize_mul:["__yo_comptime_isize_mul"],__yo_comptime_isize_div:["__yo_comptime_isize_div"],__yo_comptime_isize_mod:["__yo_comptime_isize_mod"],__yo_comptime_isize_eq:["__yo_comptime_isize_eq"],__yo_comptime_isize_neq:["__yo_comptime_isize_neq"],__yo_comptime_isize_lt:["__yo_comptime_isize_lt"],__yo_comptime_isize_lte:["__yo_comptime_isize_lte"],__yo_comptime_isize_gt:["__yo_comptime_isize_gt"],__yo_comptime_isize_gte:["__yo_comptime_isize_gte"],__yo_comptime_isize_neg:["__yo_comptime_isize_neg"],__yo_comptime_isize_bit_and:["__yo_comptime_isize_bit_and"],__yo_comptime_isize_bit_or:["__yo_comptime_isize_bit_or"],__yo_comptime_isize_bit_xor:["__yo_comptime_isize_bit_xor"],__yo_comptime_isize_bit_not:["__yo_comptime_isize_bit_not"],__yo_comptime_isize_shl:["__yo_comptime_isize_shl"],__yo_comptime_isize_shr:["__yo_comptime_isize_shr"],__yo_comptime_isize_to_comptime_string:["__yo_comptime_isize_to_comptime_string"],__yo_comptime_f32_add:["__yo_comptime_f32_add"],__yo_comptime_f32_sub:["__yo_comptime_f32_sub"],__yo_comptime_f32_mul:["__yo_comptime_f32_mul"],__yo_comptime_f32_div:["__yo_comptime_f32_div"],__yo_comptime_f32_eq:["__yo_comptime_f32_eq"],__yo_comptime_f32_neq:["__yo_comptime_f32_neq"],__yo_comptime_f32_lt:["__yo_comptime_f32_lt"],__yo_comptime_f32_lte:["__yo_comptime_f32_lte"],__yo_comptime_f32_gt:["__yo_comptime_f32_gt"],__yo_comptime_f32_gte:["__yo_comptime_f32_gte"],__yo_comptime_f32_neg:["__yo_comptime_f32_neg"],__yo_comptime_f32_to_comptime_string:["__yo_comptime_f32_to_comptime_string"],__yo_comptime_f64_add:["__yo_comptime_f64_add"],__yo_comptime_f64_sub:["__yo_comptime_f64_sub"],__yo_comptime_f64_mul:["__yo_comptime_f64_mul"],__yo_comptime_f64_div:["__yo_comptime_f64_div"],__yo_comptime_f64_eq:["__yo_comptime_f64_eq"],__yo_comptime_f64_neq:["__yo_comptime_f64_neq"],__yo_comptime_f64_lt:["__yo_comptime_f64_lt"],__yo_comptime_f64_lte:["__yo_comptime_f64_lte"],__yo_comptime_f64_gt:["__yo_comptime_f64_gt"],__yo_comptime_f64_gte:["__yo_comptime_f64_gte"],__yo_comptime_f64_neg:["__yo_comptime_f64_neg"],__yo_comptime_f64_to_comptime_string:["__yo_comptime_f64_to_comptime_string"],__yo_comptime_bool_and:["__yo_comptime_bool_and"],__yo_comptime_bool_or:["__yo_comptime_bool_or"],__yo_comptime_bool_eq:["__yo_comptime_bool_eq"],__yo_comptime_bool_neq:["__yo_comptime_bool_neq"],__yo_comptime_bool_not:["__yo_comptime_bool_not"],__yo_comptime_bool_to_comptime_string:["__yo_comptime_bool_to_comptime_string"],__yo_comptime_string_concat:["__yo_comptime_string_concat"],__yo_comptime_string_eq:["__yo_comptime_string_eq"],__yo_comptime_string_neq:["__yo_comptime_string_neq"],__yo_comptime_string_lt:["__yo_comptime_string_lt"],__yo_comptime_string_lte:["__yo_comptime_string_lte"],__yo_comptime_string_gt:["__yo_comptime_string_gt"],__yo_comptime_string_gte:["__yo_comptime_string_gte"],__yo_comptime_string_length:["__yo_comptime_string_length"],__yo_comptime_string_to_upper:["__yo_comptime_string_to_upper"],__yo_comptime_string_to_lower:["__yo_comptime_string_to_lower"],__yo_comptime_string_slice:["__yo_comptime_string_slice"],__yo_type_to_comptime_string:["__yo_type_to_comptime_string"],__yo_type_contains_rc_type:["__yo_type_contains_rc_type"],__yo_type_can_form_rc_cycle:["__yo_type_can_form_rc_cycle"],__yo_are_types_compatible:["__yo_are_types_compatible"],__yo_type_impls:["__yo_type_impls"],__yo_var_print_info:["__yo_var_print_info"],__yo_var_is_owning_the_rc_value:["__yo_var_is_owning_the_rc_value"],__yo_var_has_other_aliases:["__yo_var_has_other_aliases"],__yo_op_add:["__yo_op_add"],__yo_op_sub:["__yo_op_sub"],__yo_op_mul:["__yo_op_mul"],__yo_op_div:["__yo_op_div"],__yo_op_mod:["__yo_op_mod"],__yo_op_neg:["__yo_op_neg"],__yo_op_eq:["__yo_op_eq"],__yo_op_neq:["__yo_op_neq"],__yo_op_lt:["__yo_op_lt"],__yo_op_lte:["__yo_op_lte"],__yo_op_gt:["__yo_op_gt"],__yo_op_gte:["__yo_op_gte"],__yo_op_not:["__yo_op_not"],__yo_op_bit_and:["__yo_op_bit_and"],__yo_op_bit_or:["__yo_op_bit_or"],__yo_op_bit_xor:["__yo_op_bit_xor"],__yo_op_bit_complement:["__yo_op_bit_complement"],__yo_op_bit_left_shift:["__yo_op_bit_left_shift"],__yo_op_bit_right_shift:["__yo_op_bit_right_shift"],c_include:["c_include"],panic:["panic"],__yo_decr_rc:["__yo_decr_rc"],__yo_incr_rc:["__yo_incr_rc"],__yo_decr_rc_atomic:["__yo_decr_rc_atomic"],__yo_incr_rc_atomic:["__yo_incr_rc_atomic"],__yo_rc_own:["__yo_rc_own"],__yo_iso_extract:["__yo_iso_extract"],__yo_iso_dispose:["__yo_iso_dispose"],__yo_arc_dispose:["__yo_arc_dispose"],__yo_gc_collect:["__yo_gc_collect"],__yo_dyn_drop:["__yo_dyn_drop"],__yo_dyn_dup:["__yo_dyn_dup"],__yo_sometype_drop:["__yo_sometype_drop"],__yo_sometype_dup:["__yo_sometype_dup"],___drop:["___drop"],___dispose:["___dispose"],___dup:["___dup"],dispose:["dispose"],__yo_drop_array_element:["__yo_drop_array_element"],__yo_dup_array_element:["__yo_dup_array_element"],__yo_drop_tuple_element:["__yo_drop_tuple_element"],__yo_dup_tuple_element:["__yo_dup_tuple_element"],__yo_noop:["__yo_noop"],__yo_return_self:["__yo_return_self"],__yo_ms_sleep:["__yo_ms_sleep"],__yo_getrandom:["__yo_getrandom"],__yo_arc4random_buf:["__yo_arc4random_buf"],__yo_bcrypt_gen_random:["__yo_bcrypt_gen_random"],__yo_maybe_uninit_new:["__yo_maybe_uninit_new"],__yo_maybe_uninit_as_ptr:["__yo_maybe_uninit_as_ptr"],__yo_maybe_uninit_assume_init:["__yo_maybe_uninit_assume_init"],__yo_process_platform:["__yo_process_platform"],__yo_process_arch:["__yo_process_arch"],__yo_build_project:["__yo_build_project"],__yo_build_executable:["__yo_build_executable"],__yo_build_static_library:["__yo_build_static_library"],__yo_build_shared_library:["__yo_build_shared_library"],__yo_build_test:["__yo_build_test"],__yo_build_run:["__yo_build_run"],__yo_build_step:["__yo_build_step"],__yo_build_step_depend_on:["__yo_build_step_depend_on"],__yo_build_link:["__yo_build_link"],__yo_build_link_system_library:["__yo_build_link_system_library"],__yo_build_target_host:["__yo_build_target_host"],__yo_build_target_parse:["__yo_build_target_parse"],__yo_build_dependency:["__yo_build_dependency"],__yo_build_path_dependency:["__yo_build_path_dependency"],__yo_build_system_library:["__yo_build_system_library"],__yo_build_option:["__yo_build_option"],__yo_build_dep_artifact:["__yo_build_dep_artifact"]}});function Go(e,t,n){if(ze(e)){if(e.isReferenceSemantics)return!1;if(n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Go(i.type,t,n));return n.delete(e.id),r}if(st(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Go(i.type,t,n));return n.delete(e.id),r}if(qe(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.variants.every(i=>(i.fields??[]).every(o=>Go(o.type,t,n)));return n.delete(e.id),r}return at(e)||Rt(e)||_t(e)?Go(e.childType,t,n):vi(e,t)}function Wo(e,t,n){if(ze(e)){if(e.isReferenceSemantics||n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Wo(i.type,t,n));return n.delete(e.id),r}if(st(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.fields.every(i=>Wo(i.type,t,n));return n.delete(e.id),r}if(qe(e)){if(n.has(e.id))return!0;n.add(e.id);let r=e.variants.every(i=>(i.fields??[]).every(o=>Wo(o.type,t,n)));return n.delete(e.id),r}return at(e)||Rt(e)||_t(e)?Wo(e.childType,t,n):Ki(e,t)}function mp(e,t,n,r){let i=nr(e),o=R({expr:i,env:n,context:{...r,SelfType:t,forceCompileTimeBindings:!1}});if(!o.$)throw new Error(`Failed to evaluate auto-generated expression: ${L(i)}`);return{expr:o,env:o.$.env}}function xa({label:e,functionSignature:t,SelfType:n,env:r,context:i}){let{expr:o,env:a}=mp(t,n,r,i);if(S(o)&&o.$&&o.$.value&&Y(o.$.value)&&te(o.$.value.value)){let s=o.$.value.value,l={label:e,type:s,assignedValue:void 0,exprs:{expr:o,labelExpr:o.args[0],typeExpr:void 0,defaultValueExpr:void 0,assignedValueExpr:void 0}};if(n.trait){let u=n.trait.fields.findIndex(c=>c.label===e);u>=0?n.trait.fields[u]=l:n.trait.fields.push(l)}}return a}function Pr({label:e,functionCode:t,SelfType:n,env:r,context:i}){let{expr:o,env:a}=mp(t,n,r,i);if(S(o)&&o.$&&o.$.value&&$e(o.$.value)){o.$.value.funcId+=e,o.$.value.funcName=e;let s={label:e,type:o.$.type,assignedValue:o.$.value,exprs:{expr:o,labelExpr:o.args[0],typeExpr:void 0,defaultValueExpr:void 0,assignedValueExpr:o}};if(n.trait){let l=n.trait.fields.findIndex(u=>u.label===e);l>=0?n.trait.fields[l]=s:n.trait.fields.push(s)}}return a}function cE(e){return e.replace(/[^a-zA-Z0-9_]/g,t=>`_u${t.charCodeAt(0)}_`)}function fE(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Fc(e,t){if(e.length===0)return{destructuringExpr:"",callsExpr:""};let n=[],r=[];for(let i of e)if(fE(i)){let o=Nt("field_"+i);n.push(`${i} : ${o}`),r.push(`(${t})(${o});`)}else{let o=Nt("field_"+cE(i));n.push(`(${i}) : ${o}`),r.push(`(${t})(${o});`)}return{destructuringExpr:`{ ${n.join(", ")} } := ${an};`,callsExpr:r.join(`
77
77
  `)}}function pE(e){let t=wc;if(!pr(e))return{signature:t,code:`(${t} ())`};let n=e.fields.filter(a=>ut(a.type)).map(a=>a.label);if(!n.length)return{signature:t,code:`(${t} ())`};let{destructuringExpr:r,callsExpr:i}=Fc(n,F.___drop[0]),o=`
78
78
  ${r}
79
79
  ${i}
@@ -150,16 +150,16 @@ ${l}
150
150
  })`}function LE(e){return`((fn(${an} : Self) -> Self) { // ___dup for Arc
151
151
  ${F.__yo_incr_rc_atomic[0]}(${an});
152
152
  return ${F.__yo_rc_own[0]}(${an});
153
- })`}function hp({arcType:e,env:t,context:n}){let r=wE(e),i=FE(e),o=LE(e);return t=Pr({label:F.___dispose[0],functionCode:r,SelfType:e,env:t,context:n}),t=Pr({label:F.___drop[0],functionCode:i,SelfType:e,env:t,context:n}),t=Pr({label:F.___dup[0],functionCode:o,SelfType:e,env:t,context:n}),t}function ir(e,t,n,r){let i=`${e}()`,o=nr(i),a=R({expr:o,env:n,context:{...r,expectedType:void 0,ReceiverType:t}});if(!a.$||!mn(a.$.value))return n;n=a.$.env;let s=a.$.value;s.type.receiverType=t;let l={label:"",type:Er(1),assignedValue:s,sourceModulePath:r.currentModulePath,exprs:{expr:o}};return t.trait.fields.push(l),n}function AE({structType:e,env:t,context:n}){return e.isReferenceSemantics||e.fields.every(i=>As(i.type,t))&&(t=ir("Send",e,t,n)),t}function IE({structType:e,env:t,context:n}){return e.isReferenceSemantics&&(t=ir("Rc",e,t,n)),t}function SE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>As(o.type,t)))&&(t=ir("Send",e,t,n)),t}function vp({unionType:e,env:t,context:n}){return e.fields.every(i=>As(i.type,t))&&(t=ir("Send",e,t,n)),t}function NE({structType:e,env:t,context:n}){return e.isReferenceSemantics?ji(e,new Set,t)||(t=ir("Acyclic",e,t,n)):e.fields.every(i=>zo(i.type,t))&&(t=ir("Acyclic",e,t,n)),t}function xE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>zo(o.type,t)))&&(t=ir("Acyclic",e,t,n)),t}function Tp({unionType:e,env:t,context:n}){return e.fields.every(i=>zo(i.type,t))&&(t=ir("Acyclic",e,t,n)),t}function VE({structType:e,env:t,context:n}){return e.isReferenceSemantics||e.fields.every(i=>Go(i.type,t,new Set([e.id])))&&(t=ir("Comptime",e,t,n)),t}function DE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>Go(o.type,t,new Set([e.id]))))&&(t=ir("Comptime",e,t,n)),t}function ME({structType:e,env:t,context:n}){return e.isReferenceSemantics?(t=ir("Runtime",e,t,n),t):(e.fields.every(i=>Wo(i.type,t,new Set([e.id])))&&(t=ir("Runtime",e,t,n)),t)}function OE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>Wo(o.type,t,new Set([e.id]))))&&(t=ir("Runtime",e,t,n)),t}function Ep({unionType:e,env:t,context:n}){return t=ir("Runtime",e,t,n),t}function RE({tupleType:e,env:t,context:n}){return e.fields.every(i=>As(i.type,t))&&(t=ir("Send",e,t,n)),t}function PE({tupleType:e,env:t,context:n}){return e.fields.every(i=>Go(i.type,t,new Set([e.id])))&&(t=ir("Comptime",e,t,n)),t}function UE({tupleType:e,env:t,context:n}){return e.fields.every(i=>Wo(i.type,t,new Set([e.id])))&&(t=ir("Runtime",e,t,n)),t}function Yo({structType:e,env:t,context:n,errorToken:r}){return t=AE({structType:e,env:t,context:n}),t=IE({structType:e,env:t,context:n}),t=NE({structType:e,env:t,context:n}),t=VE({structType:e,env:t,context:n}),t=ME({structType:e,env:t,context:n}),t=mE({structType:e,env:t,context:n}),Al(e,t,r,n),t}function $p({enumType:e,env:t,context:n,errorToken:r}){return t=SE({enumType:e,env:t,context:n}),t=xE({enumType:e,env:t,context:n}),t=DE({enumType:e,env:t,context:n}),t=OE({enumType:e,env:t,context:n}),t=hE({enumType:e,env:t,context:n}),Al(e,t,r,n),t}function bp({tupleType:e,env:t,context:n,errorToken:r}){return t=RE({tupleType:e,env:t,context:n}),t=PE({tupleType:e,env:t,context:n}),t=UE({tupleType:e,env:t,context:n}),Al(e,t,r,n),t}var an,wc,Fl,Ll,Kr=j(()=>{ce();Ci();dt();Ae();gi();Je();yn();ge();Ke();Gt();an="__yo_self";wc=`(fn(${an} : Self) -> unit)`,Fl=`(fn(${an} : Self) -> unit)`,Ll=`(fn(${an} : Self) -> Self)`});function Xr(e,t){let n=ue(e,t);if(n.length===0)return;let r=n[n.length-1];if(r.value&&Y(r.value[0])){let i=r.value[0];if(ht(i.value))return i.value}}function Gn(e,t){let n=t.definitionFrameLevel;if(n!==void 0&&n>=0){let o=e.frames[n];if(o){let a=o.variables.find(s=>{var l,u;return s.name===t.name&&((u=(l=s.value)==null?void 0:l[0])==null?void 0:u.tag)==="Type"});if(a&&a.value){let s=a.value[0];if(s.value===t||z(s.value)&&s.value.id===t.id)return t;z(s.value)&&(s.value.id,t.id)}}}let r,i=new Set;do{if(i.has(t))return t;i.add(t);let o=ue(e,t.name,a=>{var s,l;return((l=(s=a.value)==null?void 0:s[0])==null?void 0:l.tag)==="Type"});if(!o.length||(r=o[o.length-1].value[0],r.value===t))return t;if(z(r.value)){if(r.value.name===t.name&&r.value.id!==t.id){let a=!1;for(let s=e.frames.length-1;s>=0;s--){let l=e.frames[s];if(l){for(let u of l.variables)if(u.name===t.name&&u.value){let c=u.value[0];if((c==null?void 0:c.tag)==="Type"&&c.value===t){a=!0;break}}if(a)break}}if(!a)return t}t=r.value}else{let a=!1;for(let s=e.frames.length-1;s>=0;s--){let l=e.frames[s];if(l){for(let u of l.variables)if(u.name===t.name&&u.value){let c=u.value[0];if((c==null?void 0:c.tag)==="Type"){let f=c;if(f.value===t){a=!0;break}if(z(f.value)&&f.value.id!==t.id)return t}}if(a)break}}if(!a)return t;break}}while(z(t));return r.value}var ui=j(()=>{ft();ge();_r();Ae()});function yo(){if(Il)return Il;let e=Zt(),t=Et(e),n={id:"comptime_int",tag:"comptime_int",trait:t};return t.receiverType=n,Il=n,n}function ha(){if(Sl)return Sl;let e=Zt(),t=Et(e),n={id:"comptime_float",tag:"comptime_float",trait:t};return t.receiverType=n,Sl=n,n}function Pn(){if(Nl)return Nl;let e=Zt(),t=Et(e),n={id:"comptime_string",tag:"comptime_string",trait:t};return t.receiverType=n,Nl=n,n}function gr(){if(xl)return xl;let e=Zt(),t=Et(e),n={id:"Expr",tag:"Expr",trait:t};return t.receiverType=n,xl=n,n}function ws(e){if(Vl.has(e))return Vl.get(e);let t=Zt(),n=Et(t),i={id:`comptime_list_${e.id}`,tag:"ComptimeList",childType:e,trait:n};return n.receiverType=i,Vl.set(e,i),i}function Ss(){return ws(gr())}function Bt(){if(Dl)return Dl;let e=Zt(),t=Et(e),n={id:"bool",tag:"bool",trait:t};return t.receiverType=n,Dl=n,n}function _n(){if(Ml)return Ml;let e=Zt(),t=Et(e),n={id:"usize",tag:"usize",trait:t};return t.receiverType=n,Ml=n,n}function va(){if(Ol)return Ol;let e=Zt(),t=Et(e),n={id:"isize",tag:"isize",trait:t};return t.receiverType=n,Ol=n,n}function Ta(){if(Rl)return Rl;let e=Zt(),t=Et(e),n={id:"u8",tag:"u8",trait:t};return t.receiverType=n,Rl=n,n}function Ea(){if(Pl)return Pl;let e=Zt(),t=Et(e),n={id:"i8",tag:"i8",trait:t};return t.receiverType=n,Pl=n,n}function $a(){if(Ul)return Ul;let e=Zt(),t=Et(e),n={id:"u16",tag:"u16",trait:t};return t.receiverType=n,Ul=n,n}function ba(){if(zl)return zl;let e=Zt(),t=Et(e),n={id:"i16",tag:"i16",trait:t};return t.receiverType=n,zl=n,n}function Ca(){if(Bl)return Bl;let e=Zt(),t=Et(e),n={id:"u32",tag:"u32",trait:t};return t.receiverType=n,Bl=n,n}function go(){if(Gl)return Gl;let e=Zt(),t=Et(e),n={id:"i32",tag:"i32",trait:t};return t.receiverType=n,Gl=n,n}function ka(){if(Wl)return Wl;let e=Zt(),t=Et(e),n={id:"u64",tag:"u64",trait:t};return t.receiverType=n,Wl=n,n}function wa(){if(Yl)return Yl;let e=Zt(),t=Et(e),n={id:"i64",tag:"i64",trait:t};return t.receiverType=n,Yl=n,n}function Fa(){if(ql)return ql;let e=Zt(),t=Et(e),n={id:"f32",tag:"f32",trait:t};return t.receiverType=n,ql=n,n}function ho(){if(Hl)return Hl;let e=Zt(),t=Et(e),n={id:"f64",tag:"f64",trait:t};return t.receiverType=n,Hl=n,n}function Qr(){if(jl)return jl;let e=Zt(),t=Et(e),n={id:"unit",tag:"unit",trait:t};return t.receiverType=n,jl=n,n}function kp(){if(Kl)return Kl;let e=Zt(),t=Et(e),n={id:"char",tag:"char",trait:t};return t.receiverType=n,Kl=n,n}function wp(){if(Xl)return Xl;let e=Zt(),t=Et(e),n={id:"short",tag:"short",trait:t};return t.receiverType=n,Xl=n,n}function Fp(){if(Ql)return Ql;let e=Zt(),t=Et(e),n={id:"ushort",tag:"ushort",trait:t};return t.receiverType=n,Ql=n,n}function Lp(){if(Zl)return Zl;let e=Zt(),t=Et(e),n={id:"int",tag:"int",trait:t};return t.receiverType=n,Zl=n,n}function Ap(){if(Jl)return Jl;let e=Zt(),t=Et(e),n={id:"uint",tag:"uint",trait:t};return t.receiverType=n,Jl=n,n}function Ip(){if(eu)return eu;let e=Zt(),t=Et(e),n={id:"long",tag:"long",trait:t};return t.receiverType=n,eu=n,n}function Sp(){if(tu)return tu;let e=Zt(),t=Et(e),n={id:"ulong",tag:"ulong",trait:t};return t.receiverType=n,tu=n,n}function Np(){if(nu)return nu;let e=Zt(),t=Et(e),n={id:"longlong",tag:"longlong",trait:t};return t.receiverType=n,nu=n,n}function xp(){if(ru)return ru;let e=Zt(),t=Et(e),n={id:"ulonglong",tag:"ulonglong",trait:t};return t.receiverType=n,ru=n,n}function Vp(){if(iu)return iu;let e=Zt(),t=Et(e),n={id:"longdouble",tag:"longdouble",trait:t};return t.receiverType=n,iu=n,n}function Ht(e){return Er(0,e)}function xi(e,t){let n=Zt(),r=Et(n),i={id:`array_${e.id+"_"+vc(vt(t))}`,tag:"Array",childType:e,length:t,trait:r};return r.receiverType=i,i}function cu(e){if(ou.has(e))return ou.get(e);let t=Zt(),n=Et(t),r={id:`slice_${e.id}`,tag:"Slice",childType:e,trait:n};return n.receiverType=r,ou.set(e,r),r}function _p(e){var r;let n=ue(e,"str").find(i=>{var o;return Y((o=i.value)==null?void 0:o[0])&&i.value[0].type});if(!n||!Y((r=n.value)==null?void 0:r[0]))throw new Error("'str' type not found in environment. Make sure prelude is loaded.");return n.value[0].value}function Dp(){if(au)return au;let e=Zt(),t=Et(e),n={id:"void",tag:"void",trait:t};return t.receiverType=n,au=n,n}function fu(e){let t=Zt(),n=Et(t),r={id:`tuple_${e.map(i=>i.type.id).join("_")}`,tag:"Tuple",fields:e,trait:n};return n.receiverType=r,r}function Ho(e,t=!1,n=!1){let r=Et(e),i={id:`struct_${Nt(e.modulePath)}`,tag:"Struct",isReferenceSemantics:t,isNewtype:n,fields:[],trait:r,env:e};return r.receiverType=i,i}function pu(e){return{id:`module_${Nt(e.modulePath)}`,tag:"Module",fields:[],env:e,trait:void 0}}function Et(e){return{id:`trait_${Nt(e.modulePath)}`,tag:"Trait",fields:[],env:e,trait:void 0}}function Mp(e){let t=Et(e),n={id:`enum_${Nt(e.modulePath)}`,tag:"Enum",variants:[],trait:t,env:e};return t.receiverType=n,n}function Op(e){let t=Et(e),n={id:`union_${Nt(e.modulePath)}`,tag:"Union",fields:[],trait:t,env:e};return t.receiverType=n,n}function jo({parameters:e,forallParameters:t,implicitParameters:n,variadicParameter:r,whereClauseExprs:i,return_:o,env:a,parametersFrame:s,SelfType:l,SelfTraitType:u,SelfModuleType:c,isClosure:f}){let p=Zt(),_=Et(p),d={id:`fn_${Nt(a.modulePath)}`,tag:"Function",parameters:e,forallParameters:t,implicitParameters:n??[],variadicParameter:r,whereClauseExprs:i,return:o,env:a,parametersFrame:s,SelfType:l,SelfTraitType:u,SelfModuleType:c,trait:_,isClosure:f};return _.receiverType=d,d}function Ko(e){if(su.has(e))return su.get(e);let t=Zt(),n=Et(t),r={id:`ptr_${e.id}`,tag:"Ptr",childType:e,trait:n};return n.receiverType=r,su.set(e,r),r}function Rp(e,t){if(lu.has(e))return lu.get(e);let n=Et(t),r={id:`iso_${e.id}`,tag:"Iso",childType:e,trait:n,env:t};return n.receiverType=r,lu.set(e,r),r}function Pp(e,t){if(uu.has(e))return uu.get(e);let n=Et(t),r={id:`arc_${e.id}`,tag:"Arc",childType:e,trait:n,env:t};return n.receiverType=r,uu.set(e,r),r}function Or(e,t,{id:n,requiredTraits:r,negativeTraits:i,recursiveTypeRef:o,env:a,context:s}){if(e.level!==0)throw console.trace(),new Error(`createSomeType expects a type with level 0, got level ${e.level}`);let l=Et(a),u=(r==null?void 0:r.map(p=>({traitType:p,frameLevel:-1})))??[],c=(i==null?void 0:i.map(p=>({traitType:p,frameLevel:-1})))??[],f={id:n??`sometype_${Nt(a.modulePath)}`,tag:"SomeType",name:t,definitionFrameLevel:a.frames.length>0?a.frames.length-1:void 0,parentType:e,size:void 0,requiredTraits:u,negativeTraits:c,trait:l,isExtern:e.isExtern,externName:e.externName,recursiveTypeRef:o};return l.receiverType=f,Xr(a,"Runtime")&&ir("Runtime",f,a,s),yp({someType:f,env:a,context:{SelfType:f,stdPath:""}}),f}function Xo(e,t){let n=Et(t),r=Er(1),i={id:`effects_row_sometype_${Nt(t.modulePath)}`,tag:"SomeType",name:e,definitionFrameLevel:t.frames.length>0?t.frames.length-1:void 0,parentType:r,size:void 0,requiredTraits:[],negativeTraits:[],trait:n,isEffectsRow:!0};return n.receiverType=i,i}function Xi(e){let t=Zt(),n=Et(t),r={id:`EffectsRow_${Nt(t.modulePath)}`,tag:"EffectsRow",implicitParameters:e,trait:n};return n.receiverType=r,r}function Er(e,t){if(Is.has(e)){let i=Is.get(e);if(i.has(t))return i.get(t)}else Is.set(e,new Map);let n=Et(Zt()),r={id:`Type(${e})`,tag:"Type",level:e,baseType:t,trait:n};return n.receiverType=r,Is.get(e).set(t,r),r}function Qo({expr:e,labelExpr:t,typeExpr:n,defaultValueExpr:r,assignedValueExpr:i}){return{expr:e,labelExpr:t,typeExpr:n,defaultValueExpr:r,assignedValueExpr:i}}function Up(e,t){let n=`fn_trait_${e.id}`,r=Et(t);return r.isFn={callType:e},r.id=n,r.receiverType=void 0,r}function Cp(e){return e.fields.map(n=>{if(n.type.tag==="Function"){let r=n.type,i=r.parameters.map(a=>`${a.label}:${x(a.type)}`).join(","),o=x(r.return.type);return`${n.label}:(${i})->${o}`}return`${n.label}:${x(n.type)}`}).join(";")}function Ns({requiredTraits:e,env:t,negativeTraits:n}){let r=Et(t),i=e.map(c=>Cp(c)).join("__"),o=n?n.map(c=>Cp(c)).join("__"):"",a=`dyn_${vc(i+(o?`_neg_${o}`:""))}`,s=e.map(c=>({traitType:c,frameLevel:-1}))??[],l=(n==null?void 0:n.map(c=>({traitType:c,frameLevel:-1})))??[],u={id:a,tag:"Dyn",requiredTraits:s,negativeTraits:l,trait:r,env:t};return r.receiverType=u,u}function Va(){Il=null,Sl=null,Nl=null,xl=null,Vl.clear(),Dl=null,Ml=null,Ol=null,Rl=null,Pl=null,Ul=null,zl=null,Bl=null,Gl=null,Wl=null,Yl=null,ql=null,Hl=null,jl=null,Kl=null,Xl=null,Ql=null,Zl=null,Jl=null,eu=null,tu=null,nu=null,ru=null,iu=null,ou.clear(),au=void 0,Is.clear(),su.clear(),lu.clear(),uu.clear()}var Il,Sl,Nl,xl,Vl,Dl,Ml,Ol,Rl,Pl,Ul,zl,Bl,Gl,Wl,Yl,ql,Hl,jl,Kl,Xl,Ql,Zl,Jl,eu,tu,nu,ru,iu,ou,au,su,lu,uu,Is,dt=j(()=>{ft();Kr();yn();ge();ui();Mr();Je();Il=null;Sl=null;Nl=null;xl=null;Vl=new Map;Dl=null;Ml=null;Ol=null;Rl=null;Pl=null;Ul=null;zl=null;Bl=null;Gl=null;Wl=null;Yl=null;ql=null;Hl=null;jl=null;Kl=null;Xl=null;Ql=null;Zl=null;Jl=null;eu=null;tu=null;nu=null;ru=null;iu=null;ou=new Map;su=new Map;lu=new Map;uu=new Map;Is=new Map});function zp(e,t){return!Vt(e)||!Vt(t)?!1:t.level===e.level&&(t.tag===e.tag||e.tag==="Type")}function Zr(e,t,n=new Set){if(n.has(t.id))return!1;if(n.add(t.id),z(t))return e===t.id;if(ze(t))return t.fields.some(r=>Zr(e,r.type,n));if(qe(t))return t.variants.some(r=>r.fields?r.fields.some(i=>Zr(e,i.type,n)):!1);if(st(t))return t.fields.some(r=>Zr(e,r.type,n));if(at(t)||Rt(t)||Rn(t))return Zr(e,t.childType,n);if(_t(t))return!1;if(Fn(t)||En(t))return Zr(e,t.childType,n);if(te(t))return t.parameters.some(r=>Zr(e,r.type,n))||Zr(e,t.return.type,n);if(Kn(t)){if(Zr(e,t.isFuture.outputType,n))return!0;for(let r of t.isFuture.effects)if(Zr(e,r.type,n))return!0;return!1}return wn(t)?Zr(e,t.isFn.callType,n):!1}function Ut(e,t,n=[]){if(n.find(r=>r.expected===e.type&&r.given===t.type))return{expectedEnv:e.env,givenEnv:t.env};if(n.push({expected:e.type,given:t.type}),z(e.type)&&z(t.type)){let r=Gn(e.env,e.type),i=Gn(t.env,t.type);if(z(r))if(z(i)){if(r!==i){let o=_e(t.type);{let a=ue(e.env,e.type.name),s=a[a.length-1];if(s)e.env=It(e.env,s,{...s,value:[o]});else{let{env:l}=Be({env:e.env,variable:{name:e.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=l}}{let a=ue(t.env,t.type.name),s=a[a.length-1];if(s)t.env=It(t.env,s,{...s,value:[o]});else{let{env:l}=Be({env:t.env,variable:{name:t.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});t.env=l}}}}else{let o=_e(i),a=ue(e.env,e.type.name),s=a[a.length-1];if(s)e.env=It(e.env,s,{...s,value:[o]});else{let{env:l}=Be({env:e.env,variable:{name:e.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=l}}else{let o=_e(r),a=ue(t.env,t.type.name),s=a[a.length-1];if(s)t.env=It(t.env,s,{...s,value:[o]});else{let{env:l}=Be({env:t.env,variable:{name:t.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});t.env=l}}if(e.type.id!==t.type.id&&e.type.requiredTraits&&t.type.requiredTraits){let o=e.type.requiredTraits,a=t.type.requiredTraits;for(let s=0;s<o.length;s++){let l=o[s].traitType;if(wn(l)){let u=a.find(c=>wn(c.traitType));if(u&&wn(u.traitType)){let{expectedEnv:c,givenEnv:f}=Ut({type:l.isFn.callType,env:e.env},{type:u.traitType.isFn.callType,env:t.env},n);e.env=c,t.env=f}}else if(Kn(l)){let u=a.find(c=>Kn(c.traitType));if(u&&Kn(u.traitType)){let{expectedEnv:c,givenEnv:f}=Ut({type:l.isFuture.outputType,env:e.env},{type:u.traitType.isFuture.outputType,env:t.env},n);e.env=c,t.env=f,Ic(l.isFuture.effects,u.traitType.isFuture.effects,e,t,n)}}}}}else if(z(e.type)){let r=Gn(e.env,e.type);if(z(r)&&(r.id===e.type.id||r.name===e.type.name)){if(Zr(e.type.id,t.type))throw new Error(`Cannot unify type variable "${e.type.name}" with type "${x(t.type)}" because it would create an infinite type.`);let i=_e(t.type),o=ue(e.env,e.type.name),a=o[o.length-1];if(a)a&&(e.env=It(e.env,a,{...a,value:[i]}));else{let{env:s}=Be({env:e.env,variable:{name:e.type.name,value:[i],type:i.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=s}if(e.type.requiredTraits){for(let{traitType:s}of e.type.requiredTraits)if(wn(s)&&te(t.type)){let l=s.isFn.callType,{expectedEnv:u,givenEnv:c}=Ut({type:l,env:e.env},{type:t.type,env:t.env},n);e.env=u,t.env=c}else if(Kn(s)&&Kn(t.type)){let{expectedEnv:l,givenEnv:u}=Ut({type:s.isFuture.outputType,env:e.env},{type:t.type.isFuture.outputType,env:t.env},n);e.env=l,t.env=u,Ic(s.isFuture.effects,t.type.isFuture.effects,e,t,n)}}}else if(!z(r)){let{expectedEnv:i,givenEnv:o}=Ut({type:r,env:e.env},{type:t.type,env:t.env},n);e.env=i,t.env=o}}else if(z(t.type)){let r=Gn(t.env,t.type);if(z(r)){if(Zr(t.type.id,e.type))throw new Error(`Cannot unify type variable "${t.type.name}" with type "${x(e.type)}" because it would create an infinite type.`);let i=_e(e.type),o=ue(t.env,t.type.name),a=o[o.length-1];if(a)a&&(t.env=It(t.env,a,{...a,value:[i]}));else{let{env:s}=Be({env:t.env,variable:{name:t.type.name,value:[i],type:i.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});t.env=s}}else{let{expectedEnv:i,givenEnv:o}=Ut({type:e.type,env:e.env},{type:r,env:t.env},n);e.env=i,t.env=o}}else if(st(e.type)&&st(t.type)&&e.type.fields.length===t.type.fields.length)for(let r=0;r<e.type.fields.length;r++){let{expectedEnv:i,givenEnv:o}=Ut({type:e.type.fields[r].type,env:e.env},{type:t.type.fields[r].type,env:t.env},n);e.env=i,t.env=o}else{if(st(e.type)&&st(t.type))throw new Error(`Cannot unify incompatible tuple types: "${x(e.type)}" and "${x(t.type)}"`);if(ze(e.type)&&ze(t.type)){if(!(e.type.id===t.type.id||e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue)){if(!(e.type.functionValue&&t.type.functionValue&&e.type.functionValue.funcId===t.type.functionValue.funcId))throw new Error(`Cannot unify incompatible struct types: "${x(e.type)}" and "${x(t.type)}"`)}for(let r=0;r<e.type.fields.length;r++){let i=e.type.fields[r],o=t.type.fields[r],{expectedEnv:a,givenEnv:s}=Ut({type:i.type,env:e.env},{type:o.type,env:t.env},n);if(e.env=a,t.env=s,i.assignedValue&&o.assignedValue&&Y(i.assignedValue)&&Y(o.assignedValue)){let{expectedEnv:l,givenEnv:u}=Ut({type:i.assignedValue.value,env:e.env},{type:o.assignedValue.value,env:t.env},n);e.env=l,t.env=u}}}else if(qe(e.type)&&qe(t.type)&&(e.type.id===t.type.id||e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue))for(let r=0;r<e.type.variants.length;r++){let i=e.type.variants[r],o=t.type.variants[r],a=i.fields??[],s=o.fields??[];for(let l=0;l<a.length;l++){let{expectedEnv:u,givenEnv:c}=Ut({type:a[l].type,env:e.env},{type:s[l].type,env:t.env},n);e.env=u,t.env=c}}else{if(qe(e.type)&&qe(t.type))throw new Error(`Cannot unify incompatible enum types: "${x(e.type)}" and "${x(t.type)}"`);if(Qe(e.type)&&Qe(t.type)&&e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue)for(let r=0;r<e.type.fields.length;r++){let i=e.type.fields[r],o=t.type.fields[r],{expectedEnv:a,givenEnv:s}=Ut({type:i.type,env:e.env},{type:o.type,env:t.env},n);if(e.env=a,t.env=s,i.assignedValue&&o.assignedValue&&Y(i.assignedValue)&&Y(o.assignedValue)){let{expectedEnv:l,givenEnv:u}=Ut({type:i.assignedValue.value,env:e.env},{type:o.assignedValue.value,env:t.env},n);e.env=l,t.env=u}}else if(ht(e.type)&&ht(t.type)&&e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue)for(let r=0;r<e.type.fields.length;r++){let i=e.type.fields[r],o=t.type.fields[r],{expectedEnv:a,givenEnv:s}=Ut({type:i.type,env:e.env},{type:o.type,env:t.env},n);if(e.env=a,t.env=s,i.assignedValue&&o.assignedValue&&Y(i.assignedValue)&&Y(o.assignedValue)){let{expectedEnv:l,givenEnv:u}=Ut({type:i.assignedValue.value,env:e.env},{type:o.assignedValue.value,env:t.env},n);e.env=l,t.env=u}}else if(_t(e.type)&&_t(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(Fn(e.type)&&Fn(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(En(e.type)&&En(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(at(e.type)&&at(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);if(e.env=r,t.env=i,Ge(e.type.length)&&e.type.length.variableName&&!Ge(t.type.length)){let o=e.type.length.variableName,a=t.type.length,s=ue(e.env,o),l=s[s.length-1];if(l)l&&(e.env=It(e.env,l,{...l,value:[a]}));else{let{env:u}=Be({env:e.env,variable:{name:o,value:[a],type:t.type.length.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=u}}}else if(Rt(e.type)&&Rt(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(Rn(e.type)&&Rn(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(Kn(e.type)&&Kn(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.isFuture.outputType,env:e.env},{type:t.type.isFuture.outputType,env:t.env},n);e.env=r,t.env=i,Ic(e.type.isFuture.effects,t.type.isFuture.effects,e,t,n)}else if(wn(e.type)&&wn(t.type)){let r=e.type,i=t.type,{expectedEnv:o,givenEnv:a}=Ut({type:r.isFn.callType,env:e.env},{type:i.isFn.callType,env:t.env},n);e.env=o,t.env=a}else if(te(e.type)&&te(t.type)&&e.type.forallParameters.length===t.type.forallParameters.length&&e.type.parameters.length===t.type.parameters.length){let r=e.type,i=t.type;for(let s=0;s<r.forallParameters.length;s++){let l=r.forallParameters[s],u=i.forallParameters[s],{expectedEnv:c,givenEnv:f}=Ut({type:l.type,env:e.env},{type:u.type,env:t.env},n);e.env=c,t.env=f}for(let s=0;s<r.parameters.length;s++){let{expectedEnv:l,givenEnv:u}=Ut({type:r.parameters[s].type,env:e.env},{type:i.parameters[s].type,env:t.env},n);e.env=l,t.env=u}{let s=r.implicitParameters,l=[];for(let _ of i.implicitParameters)_.isEffectRowSpread?Xt(_.type)&&l.push(..._.type.implicitParameters):l.push(_);let u=[],c=[],f=[];for(let _ of s)_.isEffectRowSpread?Xt(_.type)?c.push(_):z(_.type)&&_.type.isEffectsRow&&f.push(_):u.push(_);if(f.length>1)throw new Error(`Ambiguous effect row unification: multiple unsolved effect row variables (${f.map(_=>_.label).join(", ")}). At most one effect row spread can be unsolved during type unification.`);let p=new Set;for(let _ of u)for(let d=0;d<l.length;d++)if(!p.has(d)&&_.type.id===l[d].type.id){let{expectedEnv:g,givenEnv:y}=Ut({type:_.type,env:e.env},{type:l[d].type,env:t.env},n);e.env=g,t.env=y,p.add(d);break}for(let _ of c){let d=_.type.implicitParameters;for(let g of d)for(let y=0;y<l.length;y++)if(!p.has(y)&&g.type.id===l[y].type.id){let{expectedEnv:h,givenEnv:v}=Ut({type:g.type,env:e.env},{type:l[y].type,env:t.env},n);e.env=h,t.env=v,p.add(y);break}}if(f.length===1){let _=f[0],d=[];for(let g=0;g<l.length;g++)p.has(g)||d.push(l[g]);if(z(_.type)&&_.type.isEffectsRow){let g=Xi(d),y=_e(g),h=ue(e.env,_.type.name),v=h[h.length-1];if(v)e.env=It(e.env,v,{...v,value:[y]});else{let{env:E}=Be({env:e.env,variable:{name:_.type.name,value:[y],type:y.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=E}}}}let{expectedEnv:o,givenEnv:a}=Ut({type:r.return.type,env:e.env},{type:i.return.type,env:t.env},n);e.env=o,t.env=a}else if(!(Vt(e.type)&&!Vt(t.type))){if(e.type.tag!==t.type.tag)throw new Error(`Cannot unify incompatible types:
153
+ })`}function hp({arcType:e,env:t,context:n}){let r=wE(e),i=FE(e),o=LE(e);return t=Pr({label:F.___dispose[0],functionCode:r,SelfType:e,env:t,context:n}),t=Pr({label:F.___drop[0],functionCode:i,SelfType:e,env:t,context:n}),t=Pr({label:F.___dup[0],functionCode:o,SelfType:e,env:t,context:n}),t}function ir(e,t,n,r){let i=`${e}()`,o=nr(i),a=R({expr:o,env:n,context:{...r,expectedType:void 0,ReceiverType:t}});if(!a.$||!mn(a.$.value))return n;n=a.$.env;let s=a.$.value;s.type.receiverType=t;let l={label:"",type:Er(1),assignedValue:s,sourceModulePath:r.currentModulePath,exprs:{expr:o}};return t.trait.fields.push(l),n}function AE({structType:e,env:t,context:n}){return e.isReferenceSemantics||e.fields.every(i=>As(i.type,t))&&(t=ir("Send",e,t,n)),t}function IE({structType:e,env:t,context:n}){return e.isReferenceSemantics&&(t=ir("Rc",e,t,n)),t}function SE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>As(o.type,t)))&&(t=ir("Send",e,t,n)),t}function vp({unionType:e,env:t,context:n}){return e.fields.every(i=>As(i.type,t))&&(t=ir("Send",e,t,n)),t}function NE({structType:e,env:t,context:n}){return e.isReferenceSemantics?ji(e,new Set,t)||(t=ir("Acyclic",e,t,n)):e.fields.every(i=>zo(i.type,t))&&(t=ir("Acyclic",e,t,n)),t}function xE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>zo(o.type,t)))&&(t=ir("Acyclic",e,t,n)),t}function Tp({unionType:e,env:t,context:n}){return e.fields.every(i=>zo(i.type,t))&&(t=ir("Acyclic",e,t,n)),t}function VE({structType:e,env:t,context:n}){return e.isReferenceSemantics||e.fields.every(i=>Go(i.type,t,new Set([e.id])))&&(t=ir("Comptime",e,t,n)),t}function DE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>Go(o.type,t,new Set([e.id]))))&&(t=ir("Comptime",e,t,n)),t}function ME({structType:e,env:t,context:n}){return e.isReferenceSemantics?(t=ir("Runtime",e,t,n),t):(e.fields.every(i=>Wo(i.type,t,new Set([e.id])))&&(t=ir("Runtime",e,t,n)),t)}function OE({enumType:e,env:t,context:n}){return e.variants.every(i=>!i.fields||i.fields.length===0?!0:i.fields.every(o=>Wo(o.type,t,new Set([e.id]))))&&(t=ir("Runtime",e,t,n)),t}function Ep({unionType:e,env:t,context:n}){return t=ir("Runtime",e,t,n),t}function RE({tupleType:e,env:t,context:n}){return e.fields.every(i=>As(i.type,t))&&(t=ir("Send",e,t,n)),t}function PE({tupleType:e,env:t,context:n}){return e.fields.every(i=>Go(i.type,t,new Set([e.id])))&&(t=ir("Comptime",e,t,n)),t}function UE({tupleType:e,env:t,context:n}){return e.fields.every(i=>Wo(i.type,t,new Set([e.id])))&&(t=ir("Runtime",e,t,n)),t}function Yo({structType:e,env:t,context:n,errorToken:r}){return t=AE({structType:e,env:t,context:n}),t=IE({structType:e,env:t,context:n}),t=NE({structType:e,env:t,context:n}),t=VE({structType:e,env:t,context:n}),t=ME({structType:e,env:t,context:n}),t=mE({structType:e,env:t,context:n}),Al(e,t,r,n),t}function $p({enumType:e,env:t,context:n,errorToken:r}){return t=SE({enumType:e,env:t,context:n}),t=xE({enumType:e,env:t,context:n}),t=DE({enumType:e,env:t,context:n}),t=OE({enumType:e,env:t,context:n}),t=hE({enumType:e,env:t,context:n}),Al(e,t,r,n),t}function bp({tupleType:e,env:t,context:n,errorToken:r}){return t=RE({tupleType:e,env:t,context:n}),t=PE({tupleType:e,env:t,context:n}),t=UE({tupleType:e,env:t,context:n}),Al(e,t,r,n),t}var an,wc,Fl,Ll,Kr=j(()=>{ce();ki();dt();Ae();gi();Je();yn();ge();Ke();Gt();an="__yo_self";wc=`(fn(${an} : Self) -> unit)`,Fl=`(fn(${an} : Self) -> unit)`,Ll=`(fn(${an} : Self) -> Self)`});function Xr(e,t){let n=ue(e,t);if(n.length===0)return;let r=n[n.length-1];if(r.value&&Y(r.value[0])){let i=r.value[0];if(ht(i.value))return i.value}}function Gn(e,t){let n=t.definitionFrameLevel;if(n!==void 0&&n>=0){let o=e.frames[n];if(o){let a=o.variables.find(s=>{var l,u;return s.name===t.name&&((u=(l=s.value)==null?void 0:l[0])==null?void 0:u.tag)==="Type"});if(a&&a.value){let s=a.value[0];if(s.value===t||z(s.value)&&s.value.id===t.id)return t;z(s.value)&&(s.value.id,t.id)}}}let r,i=new Set;do{if(i.has(t))return t;i.add(t);let o=ue(e,t.name,a=>{var s,l;return((l=(s=a.value)==null?void 0:s[0])==null?void 0:l.tag)==="Type"});if(!o.length||(r=o[o.length-1].value[0],r.value===t))return t;if(z(r.value)){if(r.value.name===t.name&&r.value.id!==t.id){let a=!1;for(let s=e.frames.length-1;s>=0;s--){let l=e.frames[s];if(l){for(let u of l.variables)if(u.name===t.name&&u.value){let c=u.value[0];if((c==null?void 0:c.tag)==="Type"&&c.value===t){a=!0;break}}if(a)break}}if(!a)return t}t=r.value}else{let a=!1;for(let s=e.frames.length-1;s>=0;s--){let l=e.frames[s];if(l){for(let u of l.variables)if(u.name===t.name&&u.value){let c=u.value[0];if((c==null?void 0:c.tag)==="Type"){let f=c;if(f.value===t){a=!0;break}if(z(f.value)&&f.value.id!==t.id)return t}}if(a)break}}if(!a)return t;break}}while(z(t));return r.value}var ui=j(()=>{ft();ge();_r();Ae()});function yo(){if(Il)return Il;let e=Zt(),t=Et(e),n={id:"comptime_int",tag:"comptime_int",trait:t};return t.receiverType=n,Il=n,n}function ha(){if(Sl)return Sl;let e=Zt(),t=Et(e),n={id:"comptime_float",tag:"comptime_float",trait:t};return t.receiverType=n,Sl=n,n}function Pn(){if(Nl)return Nl;let e=Zt(),t=Et(e),n={id:"comptime_string",tag:"comptime_string",trait:t};return t.receiverType=n,Nl=n,n}function gr(){if(xl)return xl;let e=Zt(),t=Et(e),n={id:"Expr",tag:"Expr",trait:t};return t.receiverType=n,xl=n,n}function ws(e){if(Vl.has(e))return Vl.get(e);let t=Zt(),n=Et(t),i={id:`comptime_list_${e.id}`,tag:"ComptimeList",childType:e,trait:n};return n.receiverType=i,Vl.set(e,i),i}function Ss(){return ws(gr())}function Bt(){if(Dl)return Dl;let e=Zt(),t=Et(e),n={id:"bool",tag:"bool",trait:t};return t.receiverType=n,Dl=n,n}function _n(){if(Ml)return Ml;let e=Zt(),t=Et(e),n={id:"usize",tag:"usize",trait:t};return t.receiverType=n,Ml=n,n}function va(){if(Ol)return Ol;let e=Zt(),t=Et(e),n={id:"isize",tag:"isize",trait:t};return t.receiverType=n,Ol=n,n}function Ta(){if(Rl)return Rl;let e=Zt(),t=Et(e),n={id:"u8",tag:"u8",trait:t};return t.receiverType=n,Rl=n,n}function Ea(){if(Pl)return Pl;let e=Zt(),t=Et(e),n={id:"i8",tag:"i8",trait:t};return t.receiverType=n,Pl=n,n}function $a(){if(Ul)return Ul;let e=Zt(),t=Et(e),n={id:"u16",tag:"u16",trait:t};return t.receiverType=n,Ul=n,n}function ba(){if(zl)return zl;let e=Zt(),t=Et(e),n={id:"i16",tag:"i16",trait:t};return t.receiverType=n,zl=n,n}function Ca(){if(Bl)return Bl;let e=Zt(),t=Et(e),n={id:"u32",tag:"u32",trait:t};return t.receiverType=n,Bl=n,n}function go(){if(Gl)return Gl;let e=Zt(),t=Et(e),n={id:"i32",tag:"i32",trait:t};return t.receiverType=n,Gl=n,n}function ka(){if(Wl)return Wl;let e=Zt(),t=Et(e),n={id:"u64",tag:"u64",trait:t};return t.receiverType=n,Wl=n,n}function wa(){if(Yl)return Yl;let e=Zt(),t=Et(e),n={id:"i64",tag:"i64",trait:t};return t.receiverType=n,Yl=n,n}function Fa(){if(ql)return ql;let e=Zt(),t=Et(e),n={id:"f32",tag:"f32",trait:t};return t.receiverType=n,ql=n,n}function ho(){if(Hl)return Hl;let e=Zt(),t=Et(e),n={id:"f64",tag:"f64",trait:t};return t.receiverType=n,Hl=n,n}function Qr(){if(jl)return jl;let e=Zt(),t=Et(e),n={id:"unit",tag:"unit",trait:t};return t.receiverType=n,jl=n,n}function kp(){if(Kl)return Kl;let e=Zt(),t=Et(e),n={id:"char",tag:"char",trait:t};return t.receiverType=n,Kl=n,n}function wp(){if(Xl)return Xl;let e=Zt(),t=Et(e),n={id:"short",tag:"short",trait:t};return t.receiverType=n,Xl=n,n}function Fp(){if(Ql)return Ql;let e=Zt(),t=Et(e),n={id:"ushort",tag:"ushort",trait:t};return t.receiverType=n,Ql=n,n}function Lp(){if(Zl)return Zl;let e=Zt(),t=Et(e),n={id:"int",tag:"int",trait:t};return t.receiverType=n,Zl=n,n}function Ap(){if(Jl)return Jl;let e=Zt(),t=Et(e),n={id:"uint",tag:"uint",trait:t};return t.receiverType=n,Jl=n,n}function Ip(){if(eu)return eu;let e=Zt(),t=Et(e),n={id:"long",tag:"long",trait:t};return t.receiverType=n,eu=n,n}function Sp(){if(tu)return tu;let e=Zt(),t=Et(e),n={id:"ulong",tag:"ulong",trait:t};return t.receiverType=n,tu=n,n}function Np(){if(nu)return nu;let e=Zt(),t=Et(e),n={id:"longlong",tag:"longlong",trait:t};return t.receiverType=n,nu=n,n}function xp(){if(ru)return ru;let e=Zt(),t=Et(e),n={id:"ulonglong",tag:"ulonglong",trait:t};return t.receiverType=n,ru=n,n}function Vp(){if(iu)return iu;let e=Zt(),t=Et(e),n={id:"longdouble",tag:"longdouble",trait:t};return t.receiverType=n,iu=n,n}function Ht(e){return Er(0,e)}function Vi(e,t){let n=Zt(),r=Et(n),i={id:`array_${e.id+"_"+vc(vt(t))}`,tag:"Array",childType:e,length:t,trait:r};return r.receiverType=i,i}function cu(e){if(ou.has(e))return ou.get(e);let t=Zt(),n=Et(t),r={id:`slice_${e.id}`,tag:"Slice",childType:e,trait:n};return n.receiverType=r,ou.set(e,r),r}function _p(e){var r;let n=ue(e,"str").find(i=>{var o;return Y((o=i.value)==null?void 0:o[0])&&i.value[0].type});if(!n||!Y((r=n.value)==null?void 0:r[0]))throw new Error("'str' type not found in environment. Make sure prelude is loaded.");return n.value[0].value}function Dp(){if(au)return au;let e=Zt(),t=Et(e),n={id:"void",tag:"void",trait:t};return t.receiverType=n,au=n,n}function fu(e){let t=Zt(),n=Et(t),r={id:`tuple_${e.map(i=>i.type.id).join("_")}`,tag:"Tuple",fields:e,trait:n};return n.receiverType=r,r}function Ho(e,t=!1,n=!1){let r=Et(e),i={id:`struct_${Nt(e.modulePath)}`,tag:"Struct",isReferenceSemantics:t,isNewtype:n,fields:[],trait:r,env:e};return r.receiverType=i,i}function pu(e){return{id:`module_${Nt(e.modulePath)}`,tag:"Module",fields:[],env:e,trait:void 0}}function Et(e){return{id:`trait_${Nt(e.modulePath)}`,tag:"Trait",fields:[],env:e,trait:void 0}}function Mp(e){let t=Et(e),n={id:`enum_${Nt(e.modulePath)}`,tag:"Enum",variants:[],trait:t,env:e};return t.receiverType=n,n}function Op(e){let t=Et(e),n={id:`union_${Nt(e.modulePath)}`,tag:"Union",fields:[],trait:t,env:e};return t.receiverType=n,n}function jo({parameters:e,forallParameters:t,implicitParameters:n,variadicParameter:r,whereClauseExprs:i,return_:o,env:a,parametersFrame:s,SelfType:l,SelfTraitType:u,SelfModuleType:c,isClosure:f}){let p=Zt(),_=Et(p),d={id:`fn_${Nt(a.modulePath)}`,tag:"Function",parameters:e,forallParameters:t,implicitParameters:n??[],variadicParameter:r,whereClauseExprs:i,return:o,env:a,parametersFrame:s,SelfType:l,SelfTraitType:u,SelfModuleType:c,trait:_,isClosure:f};return _.receiverType=d,d}function Ko(e){if(su.has(e))return su.get(e);let t=Zt(),n=Et(t),r={id:`ptr_${e.id}`,tag:"Ptr",childType:e,trait:n};return n.receiverType=r,su.set(e,r),r}function Rp(e,t){if(lu.has(e))return lu.get(e);let n=Et(t),r={id:`iso_${e.id}`,tag:"Iso",childType:e,trait:n,env:t};return n.receiverType=r,lu.set(e,r),r}function Pp(e,t){if(uu.has(e))return uu.get(e);let n=Et(t),r={id:`arc_${e.id}`,tag:"Arc",childType:e,trait:n,env:t};return n.receiverType=r,uu.set(e,r),r}function Or(e,t,{id:n,requiredTraits:r,negativeTraits:i,recursiveTypeRef:o,env:a,context:s}){if(e.level!==0)throw console.trace(),new Error(`createSomeType expects a type with level 0, got level ${e.level}`);let l=Et(a),u=(r==null?void 0:r.map(p=>({traitType:p,frameLevel:-1})))??[],c=(i==null?void 0:i.map(p=>({traitType:p,frameLevel:-1})))??[],f={id:n??`sometype_${Nt(a.modulePath)}`,tag:"SomeType",name:t,definitionFrameLevel:a.frames.length>0?a.frames.length-1:void 0,parentType:e,size:void 0,requiredTraits:u,negativeTraits:c,trait:l,isExtern:e.isExtern,externName:e.externName,recursiveTypeRef:o};return l.receiverType=f,Xr(a,"Runtime")&&ir("Runtime",f,a,s),yp({someType:f,env:a,context:{SelfType:f,stdPath:""}}),f}function Xo(e,t){let n=Et(t),r=Er(1),i={id:`effects_row_sometype_${Nt(t.modulePath)}`,tag:"SomeType",name:e,definitionFrameLevel:t.frames.length>0?t.frames.length-1:void 0,parentType:r,size:void 0,requiredTraits:[],negativeTraits:[],trait:n,isEffectsRow:!0};return n.receiverType=i,i}function Xi(e){let t=Zt(),n=Et(t),r={id:`EffectsRow_${Nt(t.modulePath)}`,tag:"EffectsRow",implicitParameters:e,trait:n};return n.receiverType=r,r}function Er(e,t){if(Is.has(e)){let i=Is.get(e);if(i.has(t))return i.get(t)}else Is.set(e,new Map);let n=Et(Zt()),r={id:`Type(${e})`,tag:"Type",level:e,baseType:t,trait:n};return n.receiverType=r,Is.get(e).set(t,r),r}function Qo({expr:e,labelExpr:t,typeExpr:n,defaultValueExpr:r,assignedValueExpr:i}){return{expr:e,labelExpr:t,typeExpr:n,defaultValueExpr:r,assignedValueExpr:i}}function Up(e,t){let n=`fn_trait_${e.id}`,r=Et(t);return r.isFn={callType:e},r.id=n,r.receiverType=void 0,r}function Cp(e){return e.fields.map(n=>{if(n.type.tag==="Function"){let r=n.type,i=r.parameters.map(a=>`${a.label}:${x(a.type)}`).join(","),o=x(r.return.type);return`${n.label}:(${i})->${o}`}return`${n.label}:${x(n.type)}`}).join(";")}function Ns({requiredTraits:e,env:t,negativeTraits:n}){let r=Et(t),i=e.map(c=>Cp(c)).join("__"),o=n?n.map(c=>Cp(c)).join("__"):"",a=`dyn_${vc(i+(o?`_neg_${o}`:""))}`,s=e.map(c=>({traitType:c,frameLevel:-1}))??[],l=(n==null?void 0:n.map(c=>({traitType:c,frameLevel:-1})))??[],u={id:a,tag:"Dyn",requiredTraits:s,negativeTraits:l,trait:r,env:t};return r.receiverType=u,u}function Va(){Il=null,Sl=null,Nl=null,xl=null,Vl.clear(),Dl=null,Ml=null,Ol=null,Rl=null,Pl=null,Ul=null,zl=null,Bl=null,Gl=null,Wl=null,Yl=null,ql=null,Hl=null,jl=null,Kl=null,Xl=null,Ql=null,Zl=null,Jl=null,eu=null,tu=null,nu=null,ru=null,iu=null,ou.clear(),au=void 0,Is.clear(),su.clear(),lu.clear(),uu.clear()}var Il,Sl,Nl,xl,Vl,Dl,Ml,Ol,Rl,Pl,Ul,zl,Bl,Gl,Wl,Yl,ql,Hl,jl,Kl,Xl,Ql,Zl,Jl,eu,tu,nu,ru,iu,ou,au,su,lu,uu,Is,dt=j(()=>{ft();Kr();yn();ge();ui();Mr();Je();Il=null;Sl=null;Nl=null;xl=null;Vl=new Map;Dl=null;Ml=null;Ol=null;Rl=null;Pl=null;Ul=null;zl=null;Bl=null;Gl=null;Wl=null;Yl=null;ql=null;Hl=null;jl=null;Kl=null;Xl=null;Ql=null;Zl=null;Jl=null;eu=null;tu=null;nu=null;ru=null;iu=null;ou=new Map;su=new Map;lu=new Map;uu=new Map;Is=new Map});function zp(e,t){return!Vt(e)||!Vt(t)?!1:t.level===e.level&&(t.tag===e.tag||e.tag==="Type")}function Zr(e,t,n=new Set){if(n.has(t.id))return!1;if(n.add(t.id),z(t))return e===t.id;if(ze(t))return t.fields.some(r=>Zr(e,r.type,n));if(qe(t))return t.variants.some(r=>r.fields?r.fields.some(i=>Zr(e,i.type,n)):!1);if(st(t))return t.fields.some(r=>Zr(e,r.type,n));if(at(t)||Rt(t)||Rn(t))return Zr(e,t.childType,n);if(_t(t))return!1;if(Fn(t)||En(t))return Zr(e,t.childType,n);if(te(t))return t.parameters.some(r=>Zr(e,r.type,n))||Zr(e,t.return.type,n);if(Kn(t)){if(Zr(e,t.isFuture.outputType,n))return!0;for(let r of t.isFuture.effects)if(Zr(e,r.type,n))return!0;return!1}return wn(t)?Zr(e,t.isFn.callType,n):!1}function Ut(e,t,n=[]){if(n.find(r=>r.expected===e.type&&r.given===t.type))return{expectedEnv:e.env,givenEnv:t.env};if(n.push({expected:e.type,given:t.type}),z(e.type)&&z(t.type)){let r=Gn(e.env,e.type),i=Gn(t.env,t.type);if(z(r))if(z(i)){if(r!==i){let o=_e(t.type);{let a=ue(e.env,e.type.name),s=a[a.length-1];if(s)e.env=It(e.env,s,{...s,value:[o]});else{let{env:l}=Be({env:e.env,variable:{name:e.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=l}}{let a=ue(t.env,t.type.name),s=a[a.length-1];if(s)t.env=It(t.env,s,{...s,value:[o]});else{let{env:l}=Be({env:t.env,variable:{name:t.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});t.env=l}}}}else{let o=_e(i),a=ue(e.env,e.type.name),s=a[a.length-1];if(s)e.env=It(e.env,s,{...s,value:[o]});else{let{env:l}=Be({env:e.env,variable:{name:e.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=l}}else{let o=_e(r),a=ue(t.env,t.type.name),s=a[a.length-1];if(s)t.env=It(t.env,s,{...s,value:[o]});else{let{env:l}=Be({env:t.env,variable:{name:t.type.name,value:[o],type:o.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});t.env=l}}if(e.type.id!==t.type.id&&e.type.requiredTraits&&t.type.requiredTraits){let o=e.type.requiredTraits,a=t.type.requiredTraits;for(let s=0;s<o.length;s++){let l=o[s].traitType;if(wn(l)){let u=a.find(c=>wn(c.traitType));if(u&&wn(u.traitType)){let{expectedEnv:c,givenEnv:f}=Ut({type:l.isFn.callType,env:e.env},{type:u.traitType.isFn.callType,env:t.env},n);e.env=c,t.env=f}}else if(Kn(l)){let u=a.find(c=>Kn(c.traitType));if(u&&Kn(u.traitType)){let{expectedEnv:c,givenEnv:f}=Ut({type:l.isFuture.outputType,env:e.env},{type:u.traitType.isFuture.outputType,env:t.env},n);e.env=c,t.env=f,Ic(l.isFuture.effects,u.traitType.isFuture.effects,e,t,n)}}}}}else if(z(e.type)){let r=Gn(e.env,e.type);if(z(r)&&(r.id===e.type.id||r.name===e.type.name)){if(Zr(e.type.id,t.type))throw new Error(`Cannot unify type variable "${e.type.name}" with type "${x(t.type)}" because it would create an infinite type.`);let i=_e(t.type),o=ue(e.env,e.type.name),a=o[o.length-1];if(a)a&&(e.env=It(e.env,a,{...a,value:[i]}));else{let{env:s}=Be({env:e.env,variable:{name:e.type.name,value:[i],type:i.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=s}if(e.type.requiredTraits){for(let{traitType:s}of e.type.requiredTraits)if(wn(s)&&te(t.type)){let l=s.isFn.callType,{expectedEnv:u,givenEnv:c}=Ut({type:l,env:e.env},{type:t.type,env:t.env},n);e.env=u,t.env=c}else if(Kn(s)&&Kn(t.type)){let{expectedEnv:l,givenEnv:u}=Ut({type:s.isFuture.outputType,env:e.env},{type:t.type.isFuture.outputType,env:t.env},n);e.env=l,t.env=u,Ic(s.isFuture.effects,t.type.isFuture.effects,e,t,n)}}}else if(!z(r)){let{expectedEnv:i,givenEnv:o}=Ut({type:r,env:e.env},{type:t.type,env:t.env},n);e.env=i,t.env=o}}else if(z(t.type)){let r=Gn(t.env,t.type);if(z(r)){if(Zr(t.type.id,e.type))throw new Error(`Cannot unify type variable "${t.type.name}" with type "${x(e.type)}" because it would create an infinite type.`);let i=_e(e.type),o=ue(t.env,t.type.name),a=o[o.length-1];if(a)a&&(t.env=It(t.env,a,{...a,value:[i]}));else{let{env:s}=Be({env:t.env,variable:{name:t.type.name,value:[i],type:i.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});t.env=s}}else{let{expectedEnv:i,givenEnv:o}=Ut({type:e.type,env:e.env},{type:r,env:t.env},n);e.env=i,t.env=o}}else if(st(e.type)&&st(t.type)&&e.type.fields.length===t.type.fields.length)for(let r=0;r<e.type.fields.length;r++){let{expectedEnv:i,givenEnv:o}=Ut({type:e.type.fields[r].type,env:e.env},{type:t.type.fields[r].type,env:t.env},n);e.env=i,t.env=o}else{if(st(e.type)&&st(t.type))throw new Error(`Cannot unify incompatible tuple types: "${x(e.type)}" and "${x(t.type)}"`);if(ze(e.type)&&ze(t.type)){if(!(e.type.id===t.type.id||e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue)){if(!(e.type.functionValue&&t.type.functionValue&&e.type.functionValue.funcId===t.type.functionValue.funcId))throw new Error(`Cannot unify incompatible struct types: "${x(e.type)}" and "${x(t.type)}"`)}for(let r=0;r<e.type.fields.length;r++){let i=e.type.fields[r],o=t.type.fields[r],{expectedEnv:a,givenEnv:s}=Ut({type:i.type,env:e.env},{type:o.type,env:t.env},n);if(e.env=a,t.env=s,i.assignedValue&&o.assignedValue&&Y(i.assignedValue)&&Y(o.assignedValue)){let{expectedEnv:l,givenEnv:u}=Ut({type:i.assignedValue.value,env:e.env},{type:o.assignedValue.value,env:t.env},n);e.env=l,t.env=u}}}else if(qe(e.type)&&qe(t.type)&&(e.type.id===t.type.id||e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue))for(let r=0;r<e.type.variants.length;r++){let i=e.type.variants[r],o=t.type.variants[r],a=i.fields??[],s=o.fields??[];for(let l=0;l<a.length;l++){let{expectedEnv:u,givenEnv:c}=Ut({type:a[l].type,env:e.env},{type:s[l].type,env:t.env},n);e.env=u,t.env=c}}else{if(qe(e.type)&&qe(t.type))throw new Error(`Cannot unify incompatible enum types: "${x(e.type)}" and "${x(t.type)}"`);if(Qe(e.type)&&Qe(t.type)&&e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue)for(let r=0;r<e.type.fields.length;r++){let i=e.type.fields[r],o=t.type.fields[r],{expectedEnv:a,givenEnv:s}=Ut({type:i.type,env:e.env},{type:o.type,env:t.env},n);if(e.env=a,t.env=s,i.assignedValue&&o.assignedValue&&Y(i.assignedValue)&&Y(o.assignedValue)){let{expectedEnv:l,givenEnv:u}=Ut({type:i.assignedValue.value,env:e.env},{type:o.assignedValue.value,env:t.env},n);e.env=l,t.env=u}}else if(ht(e.type)&&ht(t.type)&&e.type.functionValue&&t.type.functionValue&&e.type.functionValue===t.type.functionValue)for(let r=0;r<e.type.fields.length;r++){let i=e.type.fields[r],o=t.type.fields[r],{expectedEnv:a,givenEnv:s}=Ut({type:i.type,env:e.env},{type:o.type,env:t.env},n);if(e.env=a,t.env=s,i.assignedValue&&o.assignedValue&&Y(i.assignedValue)&&Y(o.assignedValue)){let{expectedEnv:l,givenEnv:u}=Ut({type:i.assignedValue.value,env:e.env},{type:o.assignedValue.value,env:t.env},n);e.env=l,t.env=u}}else if(_t(e.type)&&_t(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(Fn(e.type)&&Fn(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(En(e.type)&&En(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(at(e.type)&&at(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);if(e.env=r,t.env=i,Ge(e.type.length)&&e.type.length.variableName&&!Ge(t.type.length)){let o=e.type.length.variableName,a=t.type.length,s=ue(e.env,o),l=s[s.length-1];if(l)l&&(e.env=It(e.env,l,{...l,value:[a]}));else{let{env:u}=Be({env:e.env,variable:{name:o,value:[a],type:t.type.length.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=u}}}else if(Rt(e.type)&&Rt(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(Rn(e.type)&&Rn(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n);e.env=r,t.env=i}else if(Kn(e.type)&&Kn(t.type)){let{expectedEnv:r,givenEnv:i}=Ut({type:e.type.isFuture.outputType,env:e.env},{type:t.type.isFuture.outputType,env:t.env},n);e.env=r,t.env=i,Ic(e.type.isFuture.effects,t.type.isFuture.effects,e,t,n)}else if(wn(e.type)&&wn(t.type)){let r=e.type,i=t.type,{expectedEnv:o,givenEnv:a}=Ut({type:r.isFn.callType,env:e.env},{type:i.isFn.callType,env:t.env},n);e.env=o,t.env=a}else if(te(e.type)&&te(t.type)&&e.type.forallParameters.length===t.type.forallParameters.length&&e.type.parameters.length===t.type.parameters.length){let r=e.type,i=t.type;for(let s=0;s<r.forallParameters.length;s++){let l=r.forallParameters[s],u=i.forallParameters[s],{expectedEnv:c,givenEnv:f}=Ut({type:l.type,env:e.env},{type:u.type,env:t.env},n);e.env=c,t.env=f}for(let s=0;s<r.parameters.length;s++){let{expectedEnv:l,givenEnv:u}=Ut({type:r.parameters[s].type,env:e.env},{type:i.parameters[s].type,env:t.env},n);e.env=l,t.env=u}{let s=r.implicitParameters,l=[];for(let _ of i.implicitParameters)_.isEffectRowSpread?Xt(_.type)&&l.push(..._.type.implicitParameters):l.push(_);let u=[],c=[],f=[];for(let _ of s)_.isEffectRowSpread?Xt(_.type)?c.push(_):z(_.type)&&_.type.isEffectsRow&&f.push(_):u.push(_);if(f.length>1)throw new Error(`Ambiguous effect row unification: multiple unsolved effect row variables (${f.map(_=>_.label).join(", ")}). At most one effect row spread can be unsolved during type unification.`);let p=new Set;for(let _ of u)for(let d=0;d<l.length;d++)if(!p.has(d)&&_.type.id===l[d].type.id){let{expectedEnv:g,givenEnv:y}=Ut({type:_.type,env:e.env},{type:l[d].type,env:t.env},n);e.env=g,t.env=y,p.add(d);break}for(let _ of c){let d=_.type.implicitParameters;for(let g of d)for(let y=0;y<l.length;y++)if(!p.has(y)&&g.type.id===l[y].type.id){let{expectedEnv:h,givenEnv:v}=Ut({type:g.type,env:e.env},{type:l[y].type,env:t.env},n);e.env=h,t.env=v,p.add(y);break}}if(f.length===1){let _=f[0],d=[];for(let g=0;g<l.length;g++)p.has(g)||d.push(l[g]);if(z(_.type)&&_.type.isEffectsRow){let g=Xi(d),y=_e(g),h=ue(e.env,_.type.name),v=h[h.length-1];if(v)e.env=It(e.env,v,{...v,value:[y]});else{let{env:E}=Be({env:e.env,variable:{name:_.type.name,value:[y],type:y.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});e.env=E}}}}let{expectedEnv:o,givenEnv:a}=Ut({type:r.return.type,env:e.env},{type:i.return.type,env:t.env},n);e.env=o,t.env=a}else if(!(Vt(e.type)&&!Vt(t.type))){if(e.type.tag!==t.type.tag)throw new Error(`Cannot unify incompatible types:
154
154
  Expected: "${x(e.type)}"
155
- Given: "${x(t.type)}"`)}}}return{expectedEnv:e.env,givenEnv:t.env}}function Ic(e,t,n,r,i){if(e.length===0&&t.length===0)return;let o=[],a=[],s=[];for(let c of e)c.isEffectRowSpread?Xt(c.type)?a.push(c):z(c.type)&&c.type.isEffectsRow&&s.push(c):o.push(c);if(s.length>1)throw new Error(`Ambiguous effect row unification: multiple unsolved effect row variables (${s.map(c=>c.label).join(", ")}). At most one effect row spread can be unsolved during type unification.`);let l=[];for(let c of t)c.isEffectRowSpread?Xt(c.type)&&l.push(...c.type.implicitParameters):l.push(c);let u=new Set;for(let c of o)for(let f=0;f<l.length;f++)if(!u.has(f)&&c.type.id===l[f].type.id){let{expectedEnv:p,givenEnv:_}=Ut({type:c.type,env:n.env},{type:l[f].type,env:r.env},i);n.env=p,r.env=_,u.add(f);break}for(let c of a){let f=c.type.implicitParameters;for(let p of f)for(let _=0;_<l.length;_++)if(!u.has(_)&&p.type.id===l[_].type.id){let{expectedEnv:d,givenEnv:g}=Ut({type:p.type,env:n.env},{type:l[_].type,env:r.env},i);n.env=d,r.env=g,u.add(_);break}}if(s.length===1){let c=s[0],f=[];for(let p=0;p<l.length;p++)u.has(p)||f.push(l[p]);if(z(c.type)&&c.type.isEffectsRow){let p=Xi(f),_=_e(p),d=ue(n.env,c.type.name),g=d[d.length-1];if(g)n.env=It(n.env,g,{...g,value:[_]});else{let{env:y}=Be({env:n.env,variable:{name:c.type.name,value:[_],type:_.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});n.env=y}}}}var Da=j(()=>{ft();pn();dt();ui();Ae();Mr();Je();ge()});function Sc(e,t){let n=new Map;for(let i of t.requiredTraits??[])n.set(i.traitType.id,i.traitType);let r=ci(e,t);if(r)for(let i of r.requiredTraits)n.set(i.id,i);return[...n.values()]}function Bp(e,t){let n=new Map;for(let i of t.negativeTraits??[])n.set(i.traitType.id,i.traitType);let r=ci(e,t);if(r)for(let i of r.negativeTraits)n.set(i.id,i);return[...n.values()]}function Nc(e){let t=[];for(let n of e)n.isEffectRowSpread&&Xt(n.type)?t.push(...Nc(n.type.implicitParameters)):(n.isEffectRowSpread&&z(n.type)&&n.type.isEffectsRow,t.push(n));return t}function ie(e,t,n=!1,r=new Set){var a,s;let i=e.type.id,o=t.type.id;if(i&&o&&(ze(e.type)||qe(e.type)||ln(e.type))&&(ze(t.type)||qe(t.type)||ln(t.type))){let l=`${i}:${o}`;if(r.has(l))return!0;r.add(l)}if(_s(e.type)&&_s(t.type))return e.type.tag===t.type.tag;if((dn(e.type)||e.type.tag==="u8"||e.type.tag==="i8"||e.type.tag==="u16"||e.type.tag==="i16"||e.type.tag==="u32"||e.type.tag==="i32"||e.type.tag==="u64"||e.type.tag==="i64"||e.type.tag==="usize"||e.type.tag==="isize"||yi(e.type))&&dn(t.type))return!(n&&!dn(e.type));if((On(e.type)||e.type.tag==="f32"||e.type.tag==="f64")&&On(t.type))return!(n&&!On(e.type));if((Sn(e.type)||Rt(e.type)&&mi(e.type.childType)||_t(e.type)&&(mi(e.type.childType)||ma(e.type.childType))||Bi(e.type)&&e.type.typeName==="str")&&Sn(t.type))return!0;if(yi(e.type)&&yi(t.type))return e.type.tag===t.type.tag;if(Nn(e.type)&&Nn(t.type))return!0;if(Rn(e.type)&&Rn(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(at(e.type)&&at(t.type))return Vn({value:e.type.length,env:e.env},{value:t.type.length,env:t.env})&&ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(Rt(e.type)&&Rt(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(st(e.type)&&st(t.type)){if(e.type.fields.length!==t.type.fields.length)return!1;for(let l=0;l<e.type.fields.length;l++){let u=e.type.fields[l],c=t.type.fields[l];if(!ie({type:u.type,env:e.env},{type:c.type,env:t.env},n,r))return!1}return!0}if(ze(e.type)&&ze(t.type)){if(e.type.fields.length!==t.type.fields.length||e.type.id!==t.type.id&&!lt(e.type)&&!lt(t.type)&&!(e.type.functionValue&&t.type.functionValue&&e.type.functionValue.funcId===t.type.functionValue.funcId))return!1;if(e.type.id===t.type.id)return!0;for(let l=0;l<e.type.fields.length;l++){let u=e.type.fields[l],c=t.type.fields[l];if(u.label!==c.label||!ie({type:u.type,env:e.env},{type:c.type,env:t.env},n,r))return!1}return!0}if(qe(e.type)&&qe(t.type)){if(e.type.id===t.type.id)return!0;if(e.type.variants.length!==t.type.variants.length)return!1;for(let l=0;l<e.type.variants.length;l++){let u=e.type.variants[l],c=t.type.variants[l];if(u.name!==c.name||((a=u.fields)==null?void 0:a.length)!==((s=c.fields)==null?void 0:s.length))return!1;if(u.fields)for(let f=0;f<u.fields.length;f++){let p=u.fields[f],_=c.fields[f];if(p.label!==_.label||!ie({type:p.type,env:e.env},{type:_.type,env:t.env},n,r))return!1}}return e.type.requiredVariantNames&&(t.type.selectedVariantName&&!e.type.requiredVariantNames.includes(t.type.selectedVariantName)||!t.type.selectedVariantName)?!1:!e.type.selectedVariantName}if(ln(e.type)&&ln(t.type)){if(e.type.fields.length!==t.type.fields.length||e.type.id!==t.type.id&&!lt(e.type)&&!lt(t.type))return!1;if(e.type.id===t.type.id)return!0;for(let l=0;l<e.type.fields.length;l++){let u=e.type.fields[l],c=t.type.fields[l];if(u.label!==c.label||!ie({type:u.type,env:e.env},{type:c.type,env:t.env},n,r))return!1}return!0}if(Qe(e.type)&&Qe(t.type)){for(let l of e.type.fields){let u=t.type.fields.find(c=>c.label===l.label);if(!u||!ie({type:l.type,env:e.env},{type:u.type,env:t.env},n,r))return!1}return!0}if(ht(e.type)){if(ht(t.type)){if(wn(e.type))return!(!wn(t.type)||!Gp({type:e.type.isFn.callType,env:e.env},{type:t.type.isFn.callType,env:t.env},n));if(Kn(e.type)){if(!Kn(t.type)||!ie({type:e.type.isFuture.outputType,env:e.env},{type:t.type.isFuture.outputType,env:t.env},n,r))return!1;let l=Nc(e.type.isFuture.effects),u=Nc(t.type.isFuture.effects);if(l.length>0&&u.length>0){if(l.length!==u.length)return!1;let c=new Set;for(let f of l){let p=!1;for(let _=0;_<u.length;_++)if(!c.has(_)&&ie({type:f.type,env:e.env},{type:u[_].type,env:t.env},n,r)){c.add(_),p=!0;break}if(!p)return!1}}return!0}return e.type.id===t.type.id}return Vt(t.type)&&t.type.baseType&&t.type.baseType.trait&&ht(e.type)?ie({type:e.type,env:e.env},{type:t.type.baseType.trait,env:t.env},n,r):!1}if(te(e.type)&&te(t.type))return Gp({type:e.type,env:e.env},{type:t.type,env:t.env},n);if(Vt(e.type)&&Vt(t.type))return zp(e.type,t.type);if(_t(e.type)&&_t(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},!0,r);if(Fn(e.type)&&Fn(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(En(e.type)&&En(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(e.type.tag==="void"&&t.type.tag==="void")return!0;if(ot(e.type)&&ot(t.type)){for(let{traitType:l}of e.type.requiredTraits)if(!t.type.requiredTraits.find(({traitType:c})=>ie({type:l,env:e.env},{type:c,env:t.env},n,r)))return!1;if(e.type.negativeTraits&&e.type.negativeTraits.length>0){for(let{traitType:l}of e.type.negativeTraits)if(t.type.requiredTraits.find(({traitType:c})=>ie({type:l,env:e.env},{type:c,env:t.env},n,r)))return!1}return!0}if(z(e.type)){if(ot(t.type))return!0;if(z(t.type)){if(e.type===t.type)return!0;if(e.type.id===t.type.id)return e.type.resolvedConcreteType?t.type.resolvedConcreteType?ie({type:e.type.resolvedConcreteType,env:e.env},{type:t.type.resolvedConcreteType,env:t.env},n,r):!1:!0;let l=Sc(e.env,e.type),u=Sc(t.env,t.type);if(n&&l.length!==u.length)return!1;for(let f of l)if(!u.find(_=>ie({type:f,env:e.env},{type:_,env:t.env},n,r)))return!1;let c=Bp(e.env,e.type);if(c.length>0){for(let f of c)if(u.find(_=>ie({type:f,env:e.env},{type:_,env:t.env},n,r)))return!1}if(e.type.resolvedConcreteType&&t.type.resolvedConcreteType){if(!ie({type:e.type.resolvedConcreteType,env:e.env},{type:t.type.resolvedConcreteType,env:t.env},n,r))return!1}else if(n&&(e.type.resolvedConcreteType||t.type.resolvedConcreteType))return!1;return!0}else{if(e.type.resolvedConcreteType)return ie({type:e.type.resolvedConcreteType,env:e.env},t,n,r);let l=Sc(e.env,e.type);if(l.length===0)return!n;if(l.length>0){for(let p of l)if(!Mn({targetType:t.type,traitType:p,env:e.env}))break;let c=Bp(e.env,e.type);if(c.length>0){for(let p of c)if(Mn({targetType:t.type,traitType:p,env:e.env}))return!1}let f=!0;for(let p of l)if(!Mn({targetType:t.type,traitType:p,env:e.env})){f=!1;break}if(f)return!0}let u=Gn(e.env,e.type);return e.type===u?!1:ie({type:u,env:e.env},t,n,r)}}else if(z(t.type)){if(t.type.resolvedConcreteType&&ie(e,{type:t.type.resolvedConcreteType,env:t.env},n,r))return!0;let l=Gn(t.env,t.type);return t.type===l?!1:ie(e,{type:l,env:t.env},n,r)}return!1}function Gp(e,t,n=!1){if(e.type===t.type)return!0;if(e.type.parameters.length!==t.type.parameters.length||e.type.forallParameters.length!==t.type.forallParameters.length)return!1;try{let{expectedEnv:i,givenEnv:o}=Ut({type:e.type,env:e.env},{type:t.type,env:t.env});e.env=i,t.env=o}catch{return!1}for(let i=0;i<e.type.forallParameters.length;i++){let o=e.type.forallParameters[i],a=t.type.forallParameters[i];if(!ie({type:o.type,env:e.env},{type:a.type,env:t.env},n))return!1}for(let i=0;i<e.type.parameters.length;i++){let o=e.type.parameters[i],a=t.type.parameters[i];if(o.isCompileTimeOnly!==a.isCompileTimeOnly||!ie({type:o.type,env:e.env},{type:a.type,env:t.env},n))return!1}return ie({type:e.type.return.type,env:e.env},{type:t.type.return.type,env:t.env},n)}var Qt=j(()=>{ft();Gt();Da();ge();ui();Ae();Mr();Je()});function xc(e){var t;return T(e,["->","=>"])?!!(((t=e.$)==null?void 0:t.isAnonymousFunctionDefinition)===!0||S(e)&&S(e.func)&&(T(e.func,D.fn)||T(e.func,D.unsafe_fn)||T(e.func,D.Fn))||!e.$):!1}function Vc(e,t){if(!S(e))return!1;if(t(e.func))return!0;for(let n of e.args)if(S(n)&&T(n,"=>")){for(let r of n.args)if(t(r))return!0}else if(t(n))return!0;return!1}function vi(e){var t,n,r;if(H(e))return $n(e,D.escape);if(S(e)){if((t=e.$)!=null&&t.macroExpansion)return vi(e.$.macroExpansion);if(T(e,D.cond)||T(e,D.match))return Vc(e,vi);if(xc(e)||S(e.func)&&((n=e.func.$)==null?void 0:n.value)!==void 0&&Y(e.func.$.value)&&te(e.func.$.value.value)||S(e.func)&&((r=e.func.$)==null?void 0:r.value)!==void 0&&Y(e.func.$.value)&&Qn(e.func.$.value.value))return!1;if(vi(e.func))return!0;for(let i of e.args)if(vi(i))return!0}return!1}function Ma(e){var t,n,r;if(H(e))return $n(e,D.return)||$n(e,D.escape);if(S(e)){if(T(e,D.return)||T(e,D.escape))return!0;if((t=e.$)!=null&&t.macroExpansion)return Ma(e.$.macroExpansion);if(T(e,D.cond)||T(e,D.match))return Vc(e,Ma);if(xc(e)||S(e.func)&&((n=e.func.$)==null?void 0:n.value)!==void 0&&Y(e.func.$.value)&&te(e.func.$.value.value)||S(e.func)&&((r=e.func.$)==null?void 0:r.value)!==void 0&&Y(e.func.$.value)&&Qn(e.func.$.value.value))return!1;if(Ma(e.func))return!0;for(let i of e.args)if(Ma(i))return!0}return!1}function mr(e){var t,n,r,i,o,a,s;if(S(e)){if(((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_await")return!0;if((r=e.$)!=null&&r.macroExpansion)return mr(e.$.macroExpansion);if(T(e,D.cond)||T(e,D.match))return Vc(e,mr);if(((o=(i=e.func.$)==null?void 0:i.type)==null?void 0:o.ioBuiltin)==="io_async"||xc(e)||Y((a=e.func.$)==null?void 0:a.value)&&te(e.func.$.value.value)||S(e.func)&&((s=e.func.$)==null?void 0:s.value)!==void 0&&Y(e.func.$.value)&&Qn(e.func.$.value.value))return!1;if(mr(e.func))return!0;for(let l of e.args)if(mr(l))return!0}return!1}var Zo=j(()=>{Gt();ce();Ae();ge()});var se,xn=j(()=>{dt();_r();se={tag:"Unit",type:Qr()}});function Dt(e){return H(e)&&e.token.type==="identifier"||e.token.type==="operator"}function xs(e,t,n){var a;if(!((a=e.$)!=null&&a.variableName))return;let r=ue(t,e.$.variableName);if(!r.length)return;let i=r[r.length-1],o=new Set;for(;i&&i.isOwningTheSameRcValueAs;){if(o.has(i.id))return;o.add(i.id),i=i.isOwningTheSameRcValueAs}if(i&&i.isOwningTheRcValue)return i}function Eo(e){var r,i;let t=(r=e.$)==null?void 0:r.env;if(!t)return;let n;if((i=e.$)!=null&&i.pathCollection)for(let o of e.$.pathCollection)o.length>0&&typeof o[0]=="string"&&(n=o[0]);else H(e)&&(n=e.token.value);if(n){let o=ue(t,n),a=o[o.length-1];if(a!=null&&a.isImplicit)throw m({token:e.token,errorMessage:`Cannot use implicit variable "${a.name}" in assignment. Implicit variables must be passed via using() parameters.`})}}var Sr=j(()=>{ft();xe();ce();pn()});function Wp({variablesToDrop:e,env:t,context:n}){let r=[],i=t;for(let o of e){let a=nr(`${F.___drop[0]}(${o.name})`),s=R({expr:a,env:i,context:{...n,expectedType:{env:i,type:se.type}}});r.push(s),s.$&&s.$.env&&(i=s.$.env)}return{deferredDropExpressions:r.length>0?r:void 0,env:i}}function Vs(e,t,n){var s,l;if(S(e)&&qn(e))return;if((s=e.$)!=null&&s.deferredDupExpressions)for(let u of e.$.deferredDupExpressions)Vs(u,t,n);if(S(e)&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[0])&&H(e.func.args[1])&&e.func.args[1].token.value===F.___dup[0]&&e.args.length===0&&((l=e.$)!=null&&l.env)){let u=e.func.args[0].token.value,c=ue(e.$.env,u);if(c.length>0){let f=c[c.length-1];t.has(f.id)||t.set(f.id,[]),t.get(f.id).push(e)}return}if(S(e)&&T(e,D.while))return;function i(u){var c,f;if(cn((c=u.$)==null?void 0:c.controlFlow))return!0;if(S(u)&&T(u,D.begin)){let p=u.args[u.args.length-1];if(cn((f=p==null?void 0:p.$)==null?void 0:f.controlFlow)||S(p)&&T(p,D.return))return!0}return!!(S(u)&&T(u,D.return))}function o(u){if(S(u)&&T(u,D.tuple,0))return!0;if(S(u)&&T(u,D.begin)){if(u.args.length===0)return!0;if(u.args.length===1){let c=u.args[0];if(S(c)&&T(c,D.tuple,0))return!0}}return!1}function a(u,c){let f=[],p=[],_=[];for(let g=c;g<u.args.length;g++){let y=u.args[g];if(S(y)&&T(y,"=>",2)){let h=y.args[1],v=Yp(h);f.push(v),p.push(i(h)),_.push(o(h))}}let d=new Set;for(let g of f){for(let y of g.dupCalls.keys())d.add(y);for(let y of g.varsWithPartialBranchDups)n.add(y)}if(f.length>0)for(let g of d){let y=[],h=[];for(let v=0;v<f.length;v++){let E=f[v],$=E.dupCalls.has(g),C=p[v];if($){let w=E.dupCalls.get(g);C?y.push(...w):h.push(...w)}}for(let v of y)t.has(g)||t.set(g,[]),v.__isEarlyReturnDup=!0,t.get(g).push(v);if(h.length>0){let v=0,E=0;for(let $=0;$<f.length;$++)p[$]||(v++,f[$].dupCalls.has(g)&&E++);if(E===v){t.has(g)||t.set(g,[]);for(let $ of h)t.get(g).push($)}else n.add(g)}}}if(S(e)&&T(e,D.cond)){a(e,0);return}if(S(e)&&T(e,D.match)){e.args[0]&&Vs(e.args[0],t,n),a(e,1);return}if(S(e)){Vs(e.func,t,n);for(let u of e.args)Vs(u,t,n)}}function Yp(e){let t=new Map,n=new Set;return Vs(e,t,n),{dupCalls:t,varsWithPartialBranchDups:n}}function du(e){return S(e)&&T(e,D.tuple,0)}function Dc(e,t){var n;if((n=e.$)!=null&&n.deferredDupExpressions&&(e.$.deferredDupExpressions=e.$.deferredDupExpressions.filter(r=>!t.has(r)),e.$.deferredDupExpressions.length===0&&(e.$.deferredDupExpressions=void 0)),S(e)){Dc(e.func,t);for(let r of e.args)Dc(r,t)}}function gn({expr:e,env:t,context:n,variablesToAdd:r=[],isEvaluatingFunctionBodyBeginBlock:i=!1}){var $,C,w,k,b,A,I,N,M;if(!S(e)||!T(e,D.begin)){let V={tag:"FnCall",func:{tag:"Atom",token:{...e.token,value:D.begin[0]}},args:[mt(e)],token:{...e.token,value:D.begin[0]}};Ni(e,V),e=e}let o=e.args,a=n.expectedType;if(o.length===0)return e.$={env:t,type:se.type,value:se,pathCollection:[]},e;t=Ct(t,void 0,!0);for(let V=0;V<r.length;V++){let O=r[V],{env:W}=Be({env:t,variable:O});t=W}let s=o[o.length-1],l,u=!1;for(let V=0;V<o.length;V++){let O=o[V];if(H(O)&&$n(O,D.return)||S(O)&&T(O,D.return)){if(V!==o.length-1&&!(V===o.length-2&&du(o[o.length-1])))throw m({token:O.token,errorMessage:'The "return" keyword can only be used as the last expression.'});if(S(O)&&He(O,D.return,1),!n.isEvaluatingFunctionBodyOrAsyncBlock)throw m({token:O.token,errorMessage:'The "return" keyword can only be used inside a function body or async block.'});if(l=O,H(O)){O.$={env:t,type:se.type,value:se,pathCollection:[],controlFlow:To("return")},s=O;break}else{He(O,D.return,1);let W=O.args[0],P=R({expr:W,env:t,context:{...n,expectedType:n.isEvaluatingFunctionBodyOrAsyncBlock.kind==="function-body"?{type:n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type,env:t}:n.expectedType}});if(!P.$)throw m({token:W.token,errorMessage:`Return expression is not evaluated correctly:
155
+ Given: "${x(t.type)}"`)}}}return{expectedEnv:e.env,givenEnv:t.env}}function Ic(e,t,n,r,i){if(e.length===0&&t.length===0)return;let o=[],a=[],s=[];for(let c of e)c.isEffectRowSpread?Xt(c.type)?a.push(c):z(c.type)&&c.type.isEffectsRow&&s.push(c):o.push(c);if(s.length>1)throw new Error(`Ambiguous effect row unification: multiple unsolved effect row variables (${s.map(c=>c.label).join(", ")}). At most one effect row spread can be unsolved during type unification.`);let l=[];for(let c of t)c.isEffectRowSpread?Xt(c.type)&&l.push(...c.type.implicitParameters):l.push(c);let u=new Set;for(let c of o)for(let f=0;f<l.length;f++)if(!u.has(f)&&c.type.id===l[f].type.id){let{expectedEnv:p,givenEnv:_}=Ut({type:c.type,env:n.env},{type:l[f].type,env:r.env},i);n.env=p,r.env=_,u.add(f);break}for(let c of a){let f=c.type.implicitParameters;for(let p of f)for(let _=0;_<l.length;_++)if(!u.has(_)&&p.type.id===l[_].type.id){let{expectedEnv:d,givenEnv:g}=Ut({type:p.type,env:n.env},{type:l[_].type,env:r.env},i);n.env=d,r.env=g,u.add(_);break}}if(s.length===1){let c=s[0],f=[];for(let p=0;p<l.length;p++)u.has(p)||f.push(l[p]);if(z(c.type)&&c.type.isEffectsRow){let p=Xi(f),_=_e(p),d=ue(n.env,c.type.name),g=d[d.length-1];if(g)n.env=It(n.env,g,{...g,value:[_]});else{let{env:y}=Be({env:n.env,variable:{name:c.type.name,value:[_],type:_.type,isCompileTimeOnly:!0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});n.env=y}}}}var Da=j(()=>{ft();pn();dt();ui();Ae();Mr();Je();ge()});function Sc(e,t){let n=new Map;for(let i of t.requiredTraits??[])n.set(i.traitType.id,i.traitType);let r=ci(e,t);if(r)for(let i of r.requiredTraits)n.set(i.id,i);return[...n.values()]}function Bp(e,t){let n=new Map;for(let i of t.negativeTraits??[])n.set(i.traitType.id,i.traitType);let r=ci(e,t);if(r)for(let i of r.negativeTraits)n.set(i.id,i);return[...n.values()]}function Nc(e){let t=[];for(let n of e)n.isEffectRowSpread&&Xt(n.type)?t.push(...Nc(n.type.implicitParameters)):(n.isEffectRowSpread&&z(n.type)&&n.type.isEffectsRow,t.push(n));return t}function ie(e,t,n=!1,r=new Set){var a,s;let i=e.type.id,o=t.type.id;if(i&&o&&(ze(e.type)||qe(e.type)||ln(e.type))&&(ze(t.type)||qe(t.type)||ln(t.type))){let l=`${i}:${o}`;if(r.has(l))return!0;r.add(l)}if(_s(e.type)&&_s(t.type))return e.type.tag===t.type.tag;if((dn(e.type)||e.type.tag==="u8"||e.type.tag==="i8"||e.type.tag==="u16"||e.type.tag==="i16"||e.type.tag==="u32"||e.type.tag==="i32"||e.type.tag==="u64"||e.type.tag==="i64"||e.type.tag==="usize"||e.type.tag==="isize"||yi(e.type))&&dn(t.type))return!(n&&!dn(e.type));if((On(e.type)||e.type.tag==="f32"||e.type.tag==="f64")&&On(t.type))return!(n&&!On(e.type));if((Sn(e.type)||Rt(e.type)&&mi(e.type.childType)||_t(e.type)&&(mi(e.type.childType)||ma(e.type.childType))||Gi(e.type)&&e.type.typeName==="str")&&Sn(t.type))return!0;if(yi(e.type)&&yi(t.type))return e.type.tag===t.type.tag;if(Nn(e.type)&&Nn(t.type))return!0;if(Rn(e.type)&&Rn(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(at(e.type)&&at(t.type))return Vn({value:e.type.length,env:e.env},{value:t.type.length,env:t.env})&&ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(Rt(e.type)&&Rt(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(st(e.type)&&st(t.type)){if(e.type.fields.length!==t.type.fields.length)return!1;for(let l=0;l<e.type.fields.length;l++){let u=e.type.fields[l],c=t.type.fields[l];if(!ie({type:u.type,env:e.env},{type:c.type,env:t.env},n,r))return!1}return!0}if(ze(e.type)&&ze(t.type)){if(e.type.fields.length!==t.type.fields.length||e.type.id!==t.type.id&&!lt(e.type)&&!lt(t.type)&&!(e.type.functionValue&&t.type.functionValue&&e.type.functionValue.funcId===t.type.functionValue.funcId))return!1;if(e.type.id===t.type.id)return!0;for(let l=0;l<e.type.fields.length;l++){let u=e.type.fields[l],c=t.type.fields[l];if(u.label!==c.label||!ie({type:u.type,env:e.env},{type:c.type,env:t.env},n,r))return!1}return!0}if(qe(e.type)&&qe(t.type)){if(e.type.id===t.type.id)return!0;if(e.type.variants.length!==t.type.variants.length)return!1;for(let l=0;l<e.type.variants.length;l++){let u=e.type.variants[l],c=t.type.variants[l];if(u.name!==c.name||((a=u.fields)==null?void 0:a.length)!==((s=c.fields)==null?void 0:s.length))return!1;if(u.fields)for(let f=0;f<u.fields.length;f++){let p=u.fields[f],_=c.fields[f];if(p.label!==_.label||!ie({type:p.type,env:e.env},{type:_.type,env:t.env},n,r))return!1}}return e.type.requiredVariantNames&&(t.type.selectedVariantName&&!e.type.requiredVariantNames.includes(t.type.selectedVariantName)||!t.type.selectedVariantName)?!1:!e.type.selectedVariantName}if(ln(e.type)&&ln(t.type)){if(e.type.fields.length!==t.type.fields.length||e.type.id!==t.type.id&&!lt(e.type)&&!lt(t.type))return!1;if(e.type.id===t.type.id)return!0;for(let l=0;l<e.type.fields.length;l++){let u=e.type.fields[l],c=t.type.fields[l];if(u.label!==c.label||!ie({type:u.type,env:e.env},{type:c.type,env:t.env},n,r))return!1}return!0}if(Qe(e.type)&&Qe(t.type)){for(let l of e.type.fields){let u=t.type.fields.find(c=>c.label===l.label);if(!u||!ie({type:l.type,env:e.env},{type:u.type,env:t.env},n,r))return!1}return!0}if(ht(e.type)){if(ht(t.type)){if(wn(e.type))return!(!wn(t.type)||!Gp({type:e.type.isFn.callType,env:e.env},{type:t.type.isFn.callType,env:t.env},n));if(Kn(e.type)){if(!Kn(t.type)||!ie({type:e.type.isFuture.outputType,env:e.env},{type:t.type.isFuture.outputType,env:t.env},n,r))return!1;let l=Nc(e.type.isFuture.effects),u=Nc(t.type.isFuture.effects);if(l.length>0&&u.length>0){if(l.length!==u.length)return!1;let c=new Set;for(let f of l){let p=!1;for(let _=0;_<u.length;_++)if(!c.has(_)&&ie({type:f.type,env:e.env},{type:u[_].type,env:t.env},n,r)){c.add(_),p=!0;break}if(!p)return!1}}return!0}return e.type.id===t.type.id}return Vt(t.type)&&t.type.baseType&&t.type.baseType.trait&&ht(e.type)?ie({type:e.type,env:e.env},{type:t.type.baseType.trait,env:t.env},n,r):!1}if(te(e.type)&&te(t.type))return Gp({type:e.type,env:e.env},{type:t.type,env:t.env},n);if(Vt(e.type)&&Vt(t.type))return zp(e.type,t.type);if(_t(e.type)&&_t(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},!0,r);if(Fn(e.type)&&Fn(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(En(e.type)&&En(t.type))return ie({type:e.type.childType,env:e.env},{type:t.type.childType,env:t.env},n,r);if(e.type.tag==="void"&&t.type.tag==="void")return!0;if(ot(e.type)&&ot(t.type)){for(let{traitType:l}of e.type.requiredTraits)if(!t.type.requiredTraits.find(({traitType:c})=>ie({type:l,env:e.env},{type:c,env:t.env},n,r)))return!1;if(e.type.negativeTraits&&e.type.negativeTraits.length>0){for(let{traitType:l}of e.type.negativeTraits)if(t.type.requiredTraits.find(({traitType:c})=>ie({type:l,env:e.env},{type:c,env:t.env},n,r)))return!1}return!0}if(z(e.type)){if(ot(t.type))return!0;if(z(t.type)){if(e.type===t.type)return!0;if(e.type.id===t.type.id)return e.type.resolvedConcreteType?t.type.resolvedConcreteType?ie({type:e.type.resolvedConcreteType,env:e.env},{type:t.type.resolvedConcreteType,env:t.env},n,r):!1:!0;let l=Sc(e.env,e.type),u=Sc(t.env,t.type);if(n&&l.length!==u.length)return!1;for(let f of l)if(!u.find(_=>ie({type:f,env:e.env},{type:_,env:t.env},n,r)))return!1;let c=Bp(e.env,e.type);if(c.length>0){for(let f of c)if(u.find(_=>ie({type:f,env:e.env},{type:_,env:t.env},n,r)))return!1}if(e.type.resolvedConcreteType&&t.type.resolvedConcreteType){if(!ie({type:e.type.resolvedConcreteType,env:e.env},{type:t.type.resolvedConcreteType,env:t.env},n,r))return!1}else if(n&&(e.type.resolvedConcreteType||t.type.resolvedConcreteType))return!1;return!0}else{if(e.type.resolvedConcreteType)return ie({type:e.type.resolvedConcreteType,env:e.env},t,n,r);let l=Sc(e.env,e.type);if(l.length===0)return!n;if(l.length>0){for(let p of l)if(!Mn({targetType:t.type,traitType:p,env:e.env}))break;let c=Bp(e.env,e.type);if(c.length>0){for(let p of c)if(Mn({targetType:t.type,traitType:p,env:e.env}))return!1}let f=!0;for(let p of l)if(!Mn({targetType:t.type,traitType:p,env:e.env})){f=!1;break}if(f)return!0}let u=Gn(e.env,e.type);return e.type===u?!1:ie({type:u,env:e.env},t,n,r)}}else if(z(t.type)){if(t.type.resolvedConcreteType&&ie(e,{type:t.type.resolvedConcreteType,env:t.env},n,r))return!0;let l=Gn(t.env,t.type);return t.type===l?!1:ie(e,{type:l,env:t.env},n,r)}return!1}function Gp(e,t,n=!1){if(e.type===t.type)return!0;if(e.type.parameters.length!==t.type.parameters.length||e.type.forallParameters.length!==t.type.forallParameters.length)return!1;try{let{expectedEnv:i,givenEnv:o}=Ut({type:e.type,env:e.env},{type:t.type,env:t.env});e.env=i,t.env=o}catch{return!1}for(let i=0;i<e.type.forallParameters.length;i++){let o=e.type.forallParameters[i],a=t.type.forallParameters[i];if(!ie({type:o.type,env:e.env},{type:a.type,env:t.env},n))return!1}for(let i=0;i<e.type.parameters.length;i++){let o=e.type.parameters[i],a=t.type.parameters[i];if(o.isCompileTimeOnly!==a.isCompileTimeOnly||!ie({type:o.type,env:e.env},{type:a.type,env:t.env},n))return!1}return ie({type:e.type.return.type,env:e.env},{type:t.type.return.type,env:t.env},n)}var Qt=j(()=>{ft();Gt();Da();ge();ui();Ae();Mr();Je()});function xc(e){var t;return T(e,["->","=>"])?!!(((t=e.$)==null?void 0:t.isAnonymousFunctionDefinition)===!0||S(e)&&S(e.func)&&(T(e.func,D.fn)||T(e.func,D.unsafe_fn)||T(e.func,D.Fn))||!e.$):!1}function Vc(e,t){if(!S(e))return!1;if(t(e.func))return!0;for(let n of e.args)if(S(n)&&T(n,"=>")){for(let r of n.args)if(t(r))return!0}else if(t(n))return!0;return!1}function Ti(e){var t,n,r;if(H(e))return $n(e,D.escape);if(S(e)){if((t=e.$)!=null&&t.macroExpansion)return Ti(e.$.macroExpansion);if(T(e,D.cond)||T(e,D.match))return Vc(e,Ti);if(xc(e)||S(e.func)&&((n=e.func.$)==null?void 0:n.value)!==void 0&&Y(e.func.$.value)&&te(e.func.$.value.value)||S(e.func)&&((r=e.func.$)==null?void 0:r.value)!==void 0&&Y(e.func.$.value)&&Qn(e.func.$.value.value))return!1;if(Ti(e.func))return!0;for(let i of e.args)if(Ti(i))return!0}return!1}function Ma(e){var t,n,r;if(H(e))return $n(e,D.return)||$n(e,D.escape);if(S(e)){if(T(e,D.return)||T(e,D.escape))return!0;if((t=e.$)!=null&&t.macroExpansion)return Ma(e.$.macroExpansion);if(T(e,D.cond)||T(e,D.match))return Vc(e,Ma);if(xc(e)||S(e.func)&&((n=e.func.$)==null?void 0:n.value)!==void 0&&Y(e.func.$.value)&&te(e.func.$.value.value)||S(e.func)&&((r=e.func.$)==null?void 0:r.value)!==void 0&&Y(e.func.$.value)&&Qn(e.func.$.value.value))return!1;if(Ma(e.func))return!0;for(let i of e.args)if(Ma(i))return!0}return!1}function mr(e){var t,n,r,i,o,a,s;if(S(e)){if(((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_await")return!0;if((r=e.$)!=null&&r.macroExpansion)return mr(e.$.macroExpansion);if(T(e,D.cond)||T(e,D.match))return Vc(e,mr);if(((o=(i=e.func.$)==null?void 0:i.type)==null?void 0:o.ioBuiltin)==="io_async"||xc(e)||Y((a=e.func.$)==null?void 0:a.value)&&te(e.func.$.value.value)||S(e.func)&&((s=e.func.$)==null?void 0:s.value)!==void 0&&Y(e.func.$.value)&&Qn(e.func.$.value.value))return!1;if(mr(e.func))return!0;for(let l of e.args)if(mr(l))return!0}return!1}var Zo=j(()=>{Gt();ce();Ae();ge()});var se,xn=j(()=>{dt();_r();se={tag:"Unit",type:Qr()}});function Dt(e){return H(e)&&e.token.type==="identifier"||e.token.type==="operator"}function xs(e,t,n){var a;if(!((a=e.$)!=null&&a.variableName))return;let r=ue(t,e.$.variableName);if(!r.length)return;let i=r[r.length-1],o=new Set;for(;i&&i.isOwningTheSameRcValueAs;){if(o.has(i.id))return;o.add(i.id),i=i.isOwningTheSameRcValueAs}if(i&&i.isOwningTheRcValue)return i}function Eo(e){var r,i;let t=(r=e.$)==null?void 0:r.env;if(!t)return;let n;if((i=e.$)!=null&&i.pathCollection)for(let o of e.$.pathCollection)o.length>0&&typeof o[0]=="string"&&(n=o[0]);else H(e)&&(n=e.token.value);if(n){let o=ue(t,n),a=o[o.length-1];if(a!=null&&a.isImplicit)throw m({token:e.token,errorMessage:`Cannot use implicit variable "${a.name}" in assignment. Implicit variables must be passed via using() parameters.`})}}var Sr=j(()=>{ft();xe();ce();pn()});function Wp({variablesToDrop:e,env:t,context:n}){let r=[],i=t;for(let o of e){let a=nr(`${F.___drop[0]}(${o.name})`),s=R({expr:a,env:i,context:{...n,expectedType:{env:i,type:se.type}}});r.push(s),s.$&&s.$.env&&(i=s.$.env)}return{deferredDropExpressions:r.length>0?r:void 0,env:i}}function Vs(e,t,n){var s,l;if(S(e)&&qn(e))return;if((s=e.$)!=null&&s.deferredDupExpressions)for(let u of e.$.deferredDupExpressions)Vs(u,t,n);if(S(e)&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[0])&&H(e.func.args[1])&&e.func.args[1].token.value===F.___dup[0]&&e.args.length===0&&((l=e.$)!=null&&l.env)){let u=e.func.args[0].token.value,c=ue(e.$.env,u);if(c.length>0){let f=c[c.length-1];t.has(f.id)||t.set(f.id,[]),t.get(f.id).push(e)}return}if(S(e)&&T(e,D.while))return;function i(u){var c,f;if(cn((c=u.$)==null?void 0:c.controlFlow))return!0;if(S(u)&&T(u,D.begin)){let p=u.args[u.args.length-1];if(cn((f=p==null?void 0:p.$)==null?void 0:f.controlFlow)||S(p)&&T(p,D.return))return!0}return!!(S(u)&&T(u,D.return))}function o(u){if(S(u)&&T(u,D.tuple,0))return!0;if(S(u)&&T(u,D.begin)){if(u.args.length===0)return!0;if(u.args.length===1){let c=u.args[0];if(S(c)&&T(c,D.tuple,0))return!0}}return!1}function a(u,c){let f=[],p=[],_=[];for(let g=c;g<u.args.length;g++){let y=u.args[g];if(S(y)&&T(y,"=>",2)){let h=y.args[1],v=Yp(h);f.push(v),p.push(i(h)),_.push(o(h))}}let d=new Set;for(let g of f){for(let y of g.dupCalls.keys())d.add(y);for(let y of g.varsWithPartialBranchDups)n.add(y)}if(f.length>0)for(let g of d){let y=[],h=[];for(let v=0;v<f.length;v++){let E=f[v],$=E.dupCalls.has(g),C=p[v];if($){let w=E.dupCalls.get(g);C?y.push(...w):h.push(...w)}}for(let v of y)t.has(g)||t.set(g,[]),v.__isEarlyReturnDup=!0,t.get(g).push(v);if(h.length>0){let v=0,E=0;for(let $=0;$<f.length;$++)p[$]||(v++,f[$].dupCalls.has(g)&&E++);if(E===v){t.has(g)||t.set(g,[]);for(let $ of h)t.get(g).push($)}else n.add(g)}}}if(S(e)&&T(e,D.cond)){a(e,0);return}if(S(e)&&T(e,D.match)){e.args[0]&&Vs(e.args[0],t,n),a(e,1);return}if(S(e)){Vs(e.func,t,n);for(let u of e.args)Vs(u,t,n)}}function Yp(e){let t=new Map,n=new Set;return Vs(e,t,n),{dupCalls:t,varsWithPartialBranchDups:n}}function du(e){return S(e)&&T(e,D.tuple,0)}function Dc(e,t){var n;if((n=e.$)!=null&&n.deferredDupExpressions&&(e.$.deferredDupExpressions=e.$.deferredDupExpressions.filter(r=>!t.has(r)),e.$.deferredDupExpressions.length===0&&(e.$.deferredDupExpressions=void 0)),S(e)){Dc(e.func,t);for(let r of e.args)Dc(r,t)}}function gn({expr:e,env:t,context:n,variablesToAdd:r=[],isEvaluatingFunctionBodyBeginBlock:i=!1}){var $,C,w,k,b,A,I,N,M;if(!S(e)||!T(e,D.begin)){let V={tag:"FnCall",func:{tag:"Atom",token:{...e.token,value:D.begin[0]}},args:[mt(e)],token:{...e.token,value:D.begin[0]}};xi(e,V),e=e}let o=e.args,a=n.expectedType;if(o.length===0)return e.$={env:t,type:se.type,value:se,pathCollection:[]},e;t=Ct(t,void 0,!0);for(let V=0;V<r.length;V++){let O=r[V],{env:W}=Be({env:t,variable:O});t=W}let s=o[o.length-1],l,u=!1;for(let V=0;V<o.length;V++){let O=o[V];if(H(O)&&$n(O,D.return)||S(O)&&T(O,D.return)){if(V!==o.length-1&&!(V===o.length-2&&du(o[o.length-1])))throw m({token:O.token,errorMessage:'The "return" keyword can only be used as the last expression.'});if(S(O)&&He(O,D.return,1),!n.isEvaluatingFunctionBodyOrAsyncBlock)throw m({token:O.token,errorMessage:'The "return" keyword can only be used inside a function body or async block.'});if(l=O,H(O)){O.$={env:t,type:se.type,value:se,pathCollection:[],controlFlow:To("return")},s=O;break}else{He(O,D.return,1);let W=O.args[0],P=R({expr:W,env:t,context:{...n,expectedType:n.isEvaluatingFunctionBodyOrAsyncBlock.kind==="function-body"?{type:n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type,env:t}:n.expectedType}});if(!P.$)throw m({token:W.token,errorMessage:`Return expression is not evaluated correctly:
156
156
  ${L(W)}`});if((($=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:$.kind)==="function-body"&&z(n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type)&&n.functionReturnImplConcreteType){let G=P.$.type;if(n.functionReturnImplConcreteType.length>0){let U=n.functionReturnImplConcreteType[0];if(!ie({type:U.concreteType,env:U.env},{type:G,env:t}))throw tn([{token:O.token,errorMessage:`All return statements must return the same concrete type for Impl(...).
157
157
  Impl(...) uses static dispatch and requires the same concrete type across all returns.
158
158
  Consider using Dyn(...) for dynamic dispatch if different concrete types are needed.`},{token:U.token,errorMessage:`First return has concrete type: ${x(U.concreteType)}`},{token:O.token,errorMessage:`Conflicting return has concrete type: ${x(G)}`}])}else n.functionReturnImplConcreteType.push({concreteType:G,env:t,token:O.token})}Ft(P,!0),t=P.$.env,O.$={env:t,type:P.$.type,value:P.$.value,pathCollection:P.$.pathCollection,variableName:P.$.variableName,controlFlow:To("return")},s=O;break}}else if(H(O)&&$n(O,D.break)){if(V!==o.length-1&&!(V===o.length-2&&du(o[o.length-1])))throw m({token:O.token,errorMessage:'The "break" keyword can only be used as the last expression.'});if(!n.isEvaluatingLoopBody)throw m({token:O.token,errorMessage:'The "break" keyword can only be used inside a loop.'});O.$={env:t,type:se.type,value:se,pathCollection:[],controlFlow:To("break")},s=O;break}else if(H(O)&&$n(O,D.continue)){if(V!==o.length-1&&!(V===o.length-2&&du(o[o.length-1])))throw m({token:O.token,errorMessage:'The "continue" keyword can only be used as the last expression.'});if(!n.isEvaluatingLoopBody)throw m({token:O.token,errorMessage:'The "continue" keyword can only be used inside a loop.'});O.$={env:t,type:se.type,value:se,pathCollection:[],controlFlow:To("continue")},s=O;break}else if(S(O)&&T(O,D.escape)){if(V!==o.length-1&&!(V===o.length-2&&du(o[o.length-1])))throw m({token:O.token,errorMessage:'The "escape" keyword can only be used as the last expression.'});if(!n.enclosingFunctionReturnType)throw m({token:O.token,errorMessage:'The "escape" keyword can only be used inside a function that has an enclosing function.'});l=O,He(O,D.escape,1);let W=O.args[0],P=R({expr:W,env:t,context:{...n,expectedType:{type:n.enclosingFunctionReturnType,env:t}}});if(!P.$)throw m({token:W.token,errorMessage:`Escape expression is not evaluated correctly:
159
159
  ${L(W)}`});if(O.args[0]=P,!z(n.enclosingFunctionReturnType)&&!ie({type:n.enclosingFunctionReturnType,env:t},{type:P.$.type,env:t}))throw m({token:W.token,errorMessage:`Incompatible type for \`escape\` argument:
160
160
  - Expected (enclosing function return type): ${x(n.enclosingFunctionReturnType)}
161
161
  - Got: ${x(P.$.type)}`});Ft(P,!0),t=P.$.env,O.$={env:t,type:P.$.type,value:P.$.value,pathCollection:P.$.pathCollection,variableName:P.$.variableName,controlFlow:To("escape")},s=O;break}else{let W=R({expr:O,env:t,context:{...n,expectedType:V===o.length-1?a:void 0}});if((C=W.$)!=null&&C.env&&(t=(w=W.$)==null?void 0:w.env),V<o.length-1&&!u&&(((k=W.$)==null?void 0:k.value)===void 0||S(W)&&(T(W,"=")||T(W,":="))&&!W.$.isCompileTimeOnlyAssignment)&&(u=!0),cn((b=W.$)==null?void 0:b.controlFlow)){s=W;break}}}if(!s.$)throw m({token:s.token,errorMessage:`Last expression in "begin" is not evaluated correctly:
162
- ${L(s)}`});let c=s.$.type;if(Kt(s.$.controlFlow,"return")){if(((A=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:A.kind)==="function-body")try{Ut({type:n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type,env:t},{type:c,env:t})}catch{if(!ie({type:n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type,env:t},{type:c,env:t}))throw m({token:s.token,errorMessage:`Return type mismatch. Expected type "${x(n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type)}", but got "${x(c)}".`})}else if(((I=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:I.kind)==="async-block"&&n.expectedType)try{Ut({type:n.expectedType.type,env:n.expectedType.env},{type:c,env:t})}catch{if(!ie({type:n.expectedType.type,env:n.expectedType.env},{type:c,env:t}))throw m({token:s.token,errorMessage:`Return type mismatch. Expected type "${x(n.expectedType.type)}", but got "${x(c)}".`})}}if(l){let V=S(l)&&T(l,D.return,1)?l.args[0]:l;Eo(V)}else Eo(s);let f,p=s;S(s)&&T(s,D.return,1)&&(p=s.args[0]);let _=p?(N=p.$)==null?void 0:N.variableName:void 0;if(_){let V=ue(t,_);V.length&&(f=V[V.length-1])}let d;f!=null&&f.isOwningTheRcValue&&f.frameLevel===t.frames.length-1&&!f.consumedAtToken?(ut(f.type)&&!(z(f.type)&&!f.type.resolvedConcreteType&&f.type.requiredTraits.length===0)&&(d=f),t=It(t,f,{...f,consumedAtToken:s.token})):f&&p&&(Yn(p,n),t=p.$.env);let g=Oa(t),y=[];if(_u){if(i&&t.frames.length>=2){let U={...t,frames:t.frames.slice(0,-1)},X=Oa(U);g=[...g,...X]}let V=new Map,O=new Set,W=new Map,P=-1;if(S(e))for(let U=0;U<e.args.length;U++){let X=e.args[U];P<0&&Ma(X)&&(P=U);let re=Yp(X);for(let[ee,fe]of re.dupCalls){V.has(ee)||V.set(ee,[]);let de=V.get(ee);for(let Q of fe)de.includes(Q)||(de.push(Q),W.set(Q,U))}for(let ee of re.varsWithPartialBranchDups)O.add(ee)}let G=new Set;for(let U of g){let X=U;for(;X.isOwningTheSameRcValueAs;)X=X.isOwningTheSameRcValueAs;let re=X.id,ee=V.get(re),fe=!rn(X.type)&&ut(X.type),de=O.has(re),Q=!1;if(P>=0&&ee&&ee.length>0)for(let pe of ee){if(pe.__isEarlyReturnDup)continue;let me=W.get(pe);if(me!==void 0&&me>P){Q=!0;break}}if(ee&&ee.length>0&&!fe&&!de&&!Q){let pe=0,Z=[],me=[];for(let ke of ee){let Fe=ke;Fe.__isEarlyReturnDup?Z.push(ke):Fe.__branchGroup?(pe++,me.push(Fe.__branchGroup)):(pe++,Z.push(ke))}if(pe<=1){for(let ke of me)for(let Fe of ke)G.add(Fe);for(let ke of Z)G.add(ke);ee.length=0,t=It(t,U,{...U,consumedAtToken:s.token})}else y.push(U)}else y.push(U)}if(S(e))for(let U of e.args)Dc(U,G)}let h,v;if((_u?y:g).length>0){let V=Wp({variablesToDrop:_u?y:g,env:t,context:{...n,expectedType:void 0}});h=V.deferredDropExpressions,t=V.env}if(_u&&d){let V=It(t,d,{...d,consumedAtToken:void 0});try{v=Wp({variablesToDrop:[d],env:V,context:{...n,expectedType:void 0}}).deferredDropExpressions}catch{}}l&&l.$&&(l.$.deferredDropExpressions=h);let E=t.frames[t.frames.length-1];return t=nn(t),e.$={env:t,type:s.$.type,value:u?void 0:s.$.value,pathCollection:[],controlFlow:s.$.controlFlow,deferredDropExpressions:h,consumedVariableDropExpressions:v,poppedEnvFrame:E},f&&((M=p==null?void 0:p.$)!=null&&M.deferredDupExpressions)&&p.$.deferredDupExpressions.length>0?Ft(e,!0,f):f!=null&&f.consumedAtToken?Ft(e,!0,f):Ft(e,!0),e}var _u,fi=j(()=>{ft();xe();ce();Zo();Ci();Qt();Ae();Je();xn();Jr();Ke();Da();Sr();_u=!0});function mu({beginExprs:e,env:t,context:n,allowPartialModule:r=!1}){var l,u,c,f,p;let i=pu(t),o=[],a;t=Ct(t);for(let _=0;_<e.length;_++){let d=e[_];try{if(S(d)&&T(d,D.export)){let g=d.args;for(let y=0;y<g.length;y++){let h=g[y];if(S(h)&&T(h,"...")){let v=h.args[0],E=h.args[1],$=R({expr:v,env:t,context:{...n}});if(!$.$)throw m({token:v.token,errorMessage:`Failed to evaluate the extended struct expression:
162
+ ${L(s)}`});let c=s.$.type;if(Kt(s.$.controlFlow,"return")){if(((A=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:A.kind)==="function-body")try{Ut({type:n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type,env:t},{type:c,env:t})}catch{if(!ie({type:n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type,env:t},{type:c,env:t}))throw m({token:s.token,errorMessage:`Return type mismatch. Expected type "${x(n.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type)}", but got "${x(c)}".`})}else if(((I=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:I.kind)==="async-block"&&n.expectedType)try{Ut({type:n.expectedType.type,env:n.expectedType.env},{type:c,env:t})}catch{if(!ie({type:n.expectedType.type,env:n.expectedType.env},{type:c,env:t}))throw m({token:s.token,errorMessage:`Return type mismatch. Expected type "${x(n.expectedType.type)}", but got "${x(c)}".`})}}if(l){let V=S(l)&&T(l,D.return,1)?l.args[0]:l;Eo(V)}else Eo(s);let f,p=s;S(s)&&T(s,D.return,1)&&(p=s.args[0]);let _=p?(N=p.$)==null?void 0:N.variableName:void 0;if(_){let V=ue(t,_);V.length&&(f=V[V.length-1])}let d;f!=null&&f.isOwningTheRcValue&&f.frameLevel===t.frames.length-1&&!f.consumedAtToken?(ut(f.type)&&!(z(f.type)&&!f.type.resolvedConcreteType&&f.type.requiredTraits.length===0)&&(d=f),t=It(t,f,{...f,consumedAtToken:s.token})):f&&p&&(Yn(p,n),t=p.$.env);let g=Oa(t),y=[];if(_u){if(i&&t.frames.length>=2){let U={...t,frames:t.frames.slice(0,-1)},X=Oa(U);g=[...g,...X]}let V=new Map,O=new Set,W=new Map,P=-1;if(S(e))for(let U=0;U<e.args.length;U++){let X=e.args[U];P<0&&Ma(X)&&(P=U);let re=Yp(X);for(let[ee,fe]of re.dupCalls){V.has(ee)||V.set(ee,[]);let de=V.get(ee);for(let Q of fe)de.includes(Q)||(de.push(Q),W.set(Q,U))}for(let ee of re.varsWithPartialBranchDups)O.add(ee)}let G=new Set;for(let U of g){let X=U;for(;X.isOwningTheSameRcValueAs;)X=X.isOwningTheSameRcValueAs;let re=X.id,ee=V.get(re),fe=!rn(X.type)&&ut(X.type),de=O.has(re),Q=!1;if(P>=0&&ee&&ee.length>0)for(let pe of ee){if(pe.__isEarlyReturnDup)continue;let me=W.get(pe);if(me!==void 0&&me>P){Q=!0;break}}if(ee&&ee.length>0&&!fe&&!de&&!Q){let pe=0,Z=[],me=[];for(let ke of ee){let Fe=ke;Fe.__isEarlyReturnDup?Z.push(ke):Fe.__branchGroup?(pe++,me.push(Fe.__branchGroup)):(pe++,Z.push(ke))}if(pe<=1){for(let ke of me)for(let Fe of ke)G.add(Fe);for(let ke of Z)G.add(ke);ee.length=0,t=It(t,U,{...U,consumedAtToken:s.token})}else y.push(U)}else y.push(U)}if(S(e))for(let U of e.args)Dc(U,G)}let h,v;if((_u?y:g).length>0){let V=Wp({variablesToDrop:_u?y:g,env:t,context:{...n,expectedType:void 0}});h=V.deferredDropExpressions,t=V.env}if(_u&&d){let V=It(t,d,{...d,consumedAtToken:void 0});try{v=Wp({variablesToDrop:[d],env:V,context:{...n,expectedType:void 0}}).deferredDropExpressions}catch{}}l&&l.$&&(l.$.deferredDropExpressions=h);let E=t.frames[t.frames.length-1];return t=nn(t),e.$={env:t,type:s.$.type,value:u?void 0:s.$.value,pathCollection:[],controlFlow:s.$.controlFlow,deferredDropExpressions:h,consumedVariableDropExpressions:v,poppedEnvFrame:E},f&&((M=p==null?void 0:p.$)!=null&&M.deferredDupExpressions)&&p.$.deferredDupExpressions.length>0?Ft(e,!0,f):f!=null&&f.consumedAtToken?Ft(e,!0,f):Ft(e,!0),e}var _u,fi=j(()=>{ft();xe();ce();Zo();ki();Qt();Ae();Je();xn();Jr();Ke();Da();Sr();_u=!0});function mu({beginExprs:e,env:t,context:n,allowPartialModule:r=!1}){var l,u,c,f,p;let i=pu(t),o=[],a;t=Ct(t);for(let _=0;_<e.length;_++){let d=e[_];try{if(S(d)&&T(d,D.export)){let g=d.args;for(let y=0;y<g.length;y++){let h=g[y];if(S(h)&&T(h,"...")){let v=h.args[0],E=h.args[1],$=R({expr:v,env:t,context:{...n}});if(!$.$)throw m({token:v.token,errorMessage:`Failed to evaluate the extended struct expression:
163
163
  ${L(v)}`});let C=$.$.type;if(!Qe(C))throw m({token:v.token,errorMessage:`Expected struct type for export, got:
164
164
  ${x(C)}`});let w=$.$.value,k=new Set;if(E)if(S(E)&&T(E,":",2)&&$n(E.args[0],"exclude")&&(E=E.args[1]),H(E)){let b=E.token.value,A=C.fields.find(I=>I.label===b);if(!A)throw m({token:E.token,errorMessage:`Label "${b}" is not found in the extended module type.`});k.add(b),E.$={env:t,type:A.type,value:A.assignedValue,pathCollection:[]}}else if(S(E)&&T(E,D.tuple))for(let b of E.args){if(!H(b))throw m({token:b.token,errorMessage:`Expected identifier for excluded label, got:
165
165
  ${L(b)}`});let A=b.token.value,I=C.fields.find(N=>N.label===A);if(!I)throw m({token:b.token,errorMessage:`Label "${A}" is not found in the extended module type.`});k.add(A),b.$={env:t,type:I.type,value:I.assignedValue,pathCollection:[]}}else throw m({token:E.token,errorMessage:`Expected identifier or tuple for excluded labels, got:
@@ -170,29 +170,29 @@ ${L(k)}`});if(v=k.token.value,!H(b))throw m({token:b.token,errorMessage:`Expecte
170
170
  ${L(b)}`});if(!Dt(b))throw m({token:b.token,errorMessage:`Expected identifier for export, got:
171
171
  ${L(b)}`});E=b.token.value}let $=ue(t,E);if($.length===0)throw m({token:h.token,errorMessage:`Variable "${E}" is not defined in the module.`});let C=$[$.length-1];if(i.fields.findIndex(k=>k.label===E)>=0)throw m({token:h.token,errorMessage:`Variable "${E}" is already exported in the module.`});if(!C.isCompileTimeOnly)throw m({token:h.token,errorMessage:`Variable "${E}" is not a compile-time variable and cannot be exported.`});i.fields.push({label:v,type:C.type,assignedValue:C.isCompileTimeOnly?(l=C.value)==null?void 0:l[0]:void 0,defaultValue:void 0,exprs:{expr:h,labelExpr:void 0,typeExpr:void 0,assignedValueExpr:void 0,defaultValueExpr:void 0}}),o.push((u=C.value)==null?void 0:u[0]),h.$={env:t,type:C.type,value:(c=C.value)==null?void 0:c[0],pathCollection:[]}}}}else{let g=R({expr:d,env:t,context:{...n,expectedType:void 0}});(f=g.$)!=null&&f.env&&(t=(p=g.$)==null?void 0:p.env)}}catch(g){if(r){a=g;break}else throw g}}try{a||(t=nn(t))}catch(_){if(r)a=_;else throw _}return{moduleValue:El({...i},o),moduleType:i,env:t,partialModuleError:a}}var Mc=j(()=>{ft();xe();ce();dt();Ae();Je();ge();Ke();Sr()});function yu({functionType:e,specializedEnv:t,SelfType:n}){var u;let r=e.parameters.map(c=>{var _;if(!c.exprs.typeExpr)return c;let f=mt(c.exprs.typeExpr),p=R({expr:f,env:t,context:{isEvaluatingGenericImplSpecialization:!0,stdPath:"",isEvaluatingFunctionType:!0,SelfType:n}});return Y((_=p.$)==null?void 0:_.value)?{...c,type:p.$.value.value,exprs:{...c.exprs}}:c}),i=e.return.type,o=mt(e.return.typeExpr),a=R({expr:o,env:t,context:{isEvaluatingGenericImplSpecialization:!0,stdPath:"",isEvaluatingFunctionType:!0,SelfType:n}});Y((u=a.$)==null?void 0:u.value)&&(i=a.$.value.value);let s=e.SelfType;n&&(s=n);let l={...e.parametersFrame,variables:e.parametersFrame.variables.map(c=>{let f=r.find(_=>_.label===c.name),p=f?f.type:c.type;return p!==c.type?{...c,type:p}:c})};return{...e,env:t,forallParameters:[],parameters:r,parametersFrame:l,return:{...e.return,type:i},SelfType:s}}function zE({traitExpr:e,traitType:t}){if(!e||!S(e))return{};let n=e.func;if(S(n)){let r=n.args.map(o=>mt(o)),i;if(t.functionValue&&te(t.functionValue.type)){let o=t.functionValue.type;o.parameters.length>0?i=o.parameters.map(a=>a.label):o.forallParameters.length>0&&(i=o.forallParameters.map(a=>a.label))}return{traitTypeArgExprs:r,traitFunctionParamNames:i}}if(!t.functionValue){let r=[],i=[];for(let o of e.args)if(S(o)&&T(o,":",2)){let a=o.args[0],s=o.args[1];if(H(a)){let l=a.token.value,u=t.fields.find(c=>c.label===l);u&&!te(u.type)&&(r.push(mt(s)),i.push(l))}}if(r.length>0)return{traitTypeArgExprs:r,traitFunctionParamNames:i}}return{}}function qp({fieldExprs:e,env:t,context:n,receiverType:r}){var u;let i=[],o=Et(t),a=[],s=!1,l=r==null?void 0:r.trait;r!=null&&r.trait&&(r.trait={...r.trait,fields:[...r.trait.fields]}),t=Ct(t);for(let c of e){if(S(c)&&T(c,D.begin))throw m({token:c.token,errorMessage:'impl receiverType, ... no longer accepts begin blocks. Use "impl { ... }" for anonymous modules.'});if(S(c)&&(T(c,"::",2)||T(c,":=",2)))throw m({token:c.token,errorMessage:'impl fields must use ":". "::" and ":=" are not allowed here.'});if(S(c)&&T(c,":",2)){let p=c.args[0],_=c.args[1];if(!H(p)||!Dt(p))throw m({token:p.token,errorMessage:`Expected identifier for impl field name, got:
172
172
  ${L(p)}`});let d=p.token.value,g=R({expr:_,env:t,context:{...n,expectedType:void 0,SelfType:r}});if(!((u=g.$)!=null&&u.type))throw m({token:_.token,errorMessage:`Failed to evaluate impl field value for "${d}".`});t=g.$.env;let y=g.$.type,h=g.$.value;if(!h)throw m({token:_.token,errorMessage:`impl field "${d}" must be a compile-time value.`});$e(h)&&!h.funcName&&(h.funcName=d,h.funcId+=`_${d}`);let{env:v}=Be({env:t,variable:{name:d,type:y,isCompileTimeOnly:!0,value:[h],token:p.token,initializedAtToken:p.token,consumedAtToken:void 0,isOwningTheRcValue:!1}});t=v,o.fields.push({label:d,type:y,assignedValue:h,defaultValue:void 0,exprs:{expr:c}}),a.push(h),s=!0,r!=null&&r.trait&&r.trait.fields.push({label:d,type:y,assignedValue:h,defaultValue:void 0,exprs:{expr:c}});continue}let f=R({expr:c,env:t,context:{...n,expectedType:void 0,ReceiverType:r}});if(!f.$||!mn(f.$.value))throw m({token:c.token,errorMessage:`Expected trait value in impl field list, got:
173
- ${L(c)}`});t=f.$.env,i.push({traitValue:f.$.value,sourceExpr:c,isAnonymousTrait:!1})}if(t=nn(t),r&&(r.trait=l),s){let c=ga({...o,receiverType:r},a);i.unshift({traitValue:c,sourceExpr:void 0,isAnonymousTrait:!0})}return{env:t,traitEntries:i}}function Ms(e){for(let[t,n]of Vi.entries()){let r=n.filter(i=>i.sourceModulePath!==e);r.length===0?Vi.delete(t):Vi.set(t,r)}}function BE(e){for(let[t,n]of Jo.entries()){let r=n.filter(i=>i.modulePath!==e);r.length===0?Jo.delete(t):Jo.set(t,r)}}function Qi(){Ds.clear(),Vi.clear(),Jo.clear()}function gu(e){return e.functionValue?e.functionValue.funcId:e.typeName||e.id}function Hp(e,t){let n=Vi.get(e);n||(n=[],Vi.set(e,n)),n.push(t)}function GE({receiverType:e,traitType:t,currentModulePath:n,expr:r}){let i=e.id,a=(Jo.get(i)||[]).find(s=>s.traitTypeId===t.id);if(a)throw m({token:r.token,errorMessage:`Trait "${t.typeName??t.id}" is already implemented for type "${x(e)}".
173
+ ${L(c)}`});t=f.$.env,i.push({traitValue:f.$.value,sourceExpr:c,isAnonymousTrait:!1})}if(t=nn(t),r&&(r.trait=l),s){let c=ga({...o,receiverType:r},a);i.unshift({traitValue:c,sourceExpr:void 0,isAnonymousTrait:!0})}return{env:t,traitEntries:i}}function Ms(e){for(let[t,n]of Di.entries()){let r=n.filter(i=>i.sourceModulePath!==e);r.length===0?Di.delete(t):Di.set(t,r)}}function BE(e){for(let[t,n]of Jo.entries()){let r=n.filter(i=>i.modulePath!==e);r.length===0?Jo.delete(t):Jo.set(t,r)}}function Qi(){Ds.clear(),Di.clear(),Jo.clear()}function gu(e){return e.functionValue?e.functionValue.funcId:e.typeName||e.id}function Hp(e,t){let n=Di.get(e);n||(n=[],Di.set(e,n)),n.push(t)}function GE({receiverType:e,traitType:t,currentModulePath:n,expr:r}){let i=e.id,a=(Jo.get(i)||[]).find(s=>s.traitTypeId===t.id);if(a)throw m({token:r.token,errorMessage:`Trait "${t.typeName??t.id}" is already implemented for type "${x(e)}".
174
174
  First implementation was in: ${a.modulePath||"unknown"}`})}function WE({receiverType:e,traitType:t,currentModulePath:n,expr:r}){let i=e.id,o=Jo.get(i);o||(o=[],Jo.set(i,o)),o.push({traitTypeId:t.id,traitTypeName:t.typeName,modulePath:n||"unknown",expr:r})}function YE({receiverType:e,traitType:t,currentModulePath:n,expr:r}){if(!n)return;let i=t.definedInModulePath===n,o=e.definedInModulePath===n;if(!(n.includes("prelude.yo")||n.includes("std/"))&&!i&&!o)throw m({token:r.token,errorMessage:`Orphan impl: Cannot implement foreign trait "${t.typeName??t.id}" for foreign type "${x(e)}".
175
175
  At least one of the trait or the type must be defined in this module.
176
176
  Trait defined in: ${t.definedInModulePath||"unknown"}
177
177
  Type defined in: ${e.definedInModulePath||"unknown"}
178
- Current module: ${n}`})}function hu({concreteType:e,traitType:t,env:n}){let r=gu(t),i=Vi.get(r);if(!(!i||i.length===0)){for(let o of i)if(Tu({concreteType:e,impl:o,env:n}).matched)return o}}function Di({concreteType:e,methodName:t,env:n}){if(z(e)){let i=Gn(n,e);z(i)||(e=i)}let r=[];for(let[i,o]of Vi.entries())for(let a of o){let s=Tu({concreteType:e,impl:a,env:n});if(!s.matched)continue;let l=a.traitType,u=a.traitValue,c=l.fields.findIndex(f=>f.label===t&&te(f.type));if(c>=0){let f=l.fields[c];if(te(f.type)){let p=u.fields[c],_=Wi(e);if($e(p)&&(s.valueSubstitutions.size>0||s.substitutions.size>0)&&!_){let g=a.definitionEnv,y=Ct(g);for(let[C,w]of s.substitutions){let{env:k}=Be({env:y,variable:{name:C,type:Ht(),isCompileTimeOnly:!0,value:[_e(w)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=k}for(let[C,w]of s.valueSubstitutions){let{env:k}=Be({env:y,variable:{name:C,type:w.type,isCompileTimeOnly:!0,value:[w],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=k}if(a.traitTypeArgExprs&&a.traitFunctionParamNames&&a.traitTypeArgExprs.length===a.traitFunctionParamNames.length)for(let C=0;C<a.traitTypeArgExprs.length;C++){let w=a.traitTypeArgExprs[C],k=a.traitFunctionParamNames[C],b=R({expr:mt(w),env:y,context:{isEvaluatingGenericImplSpecialization:!0,stdPath:""}});if(b.$&&Y(b.$.value)){let{env:A}=Be({env:y,variable:{name:k,type:Ht(),isCompileTimeOnly:!0,value:[b.$.value],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});y=A}}let h=yu({functionType:f.type,specializedEnv:y,SelfType:s.substitutions.get("Self")});y=Ct(y,h.parametersFrame);let v=mt(p.body),E=gn({expr:v,env:y,context:{isEvaluatingGenericImplSpecialization:!0,expectedType:{type:h.return.type,env:y},stdPath:"",isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:h,value:p,evaluationEnv:y},functionReturnImplConcreteType:[],SelfType:s.substitutions.get("Self")},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),$={...p,specializedType:h,body:E,funcId:`${p.funcId}_specialized_${[...s.substitutions.entries()].map(([C,w])=>`${C}_${x(w)}`).join("_")}_${[...s.valueSubstitutions.entries()].map(([C,w])=>`${C}_${vt(w)}`).join("_")}`,funcName:p.funcName?`${p.funcName}_specialized`:void 0};r.push({type:h,value:$})}else if(_){let g=a.definitionEnv,y=Ct(g);for(let[v,E]of s.substitutions){let{env:$}=Be({env:y,variable:{name:v,type:Ht(),isCompileTimeOnly:!0,value:[_e(E)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}for(let[v,E]of s.valueSubstitutions){let{env:$}=Be({env:y,variable:{name:v,type:E.type,isCompileTimeOnly:!0,value:[E],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}let h=yu({functionType:f.type,specializedEnv:y,SelfType:s.substitutions.get("Self")});r.push({type:h,value:void 0})}else if($e(p)){let g={...p,specializedType:f.type};r.push({type:f.type,value:g})}else if(!$e(p)&&(s.substitutions.size>0||s.valueSubstitutions.size>0)){let g=a.definitionEnv,y=Ct(g);for(let[v,E]of s.substitutions){let{env:$}=Be({env:y,variable:{name:v,type:Ht(),isCompileTimeOnly:!0,value:[_e(E)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}for(let[v,E]of s.valueSubstitutions){let{env:$}=Be({env:y,variable:{name:v,type:E.type,isCompileTimeOnly:!0,value:[E],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}let h=yu({functionType:f.type,specializedEnv:y,SelfType:s.substitutions.get("Self")});r.push({type:h,value:p})}else r.push({type:f.type,value:p})}}}return r}function vu({concreteType:e,propertyName:t,env:n}){if(z(e)){let r=Gn(n,e);z(r)||(e=r)}for(let[r,i]of Vi.entries())for(let o of i){let a;try{a=Tu({concreteType:e,impl:o,env:n})}catch{continue}if(!a.matched)continue;let s=o.traitType,l=s.fields.findIndex(f=>f.label===t&&!te(f.type));if(l<0)continue;if(o.traitTypeArgExprs&&o.traitFunctionParamNames&&o.traitTypeArgExprs.length===o.traitFunctionParamNames.length){let f=o.definitionEnv,p=Ct(f);for(let[_,d]of a.substitutions){let{env:g}=Be({env:p,variable:{name:_,type:Ht(),isCompileTimeOnly:!0,value:[_e(d)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});p=g}for(let _=0;_<o.traitTypeArgExprs.length;_++){let d=o.traitTypeArgExprs[_];if(o.traitFunctionParamNames[_]===t)try{let y=mt(d),h=R({expr:y,env:p,context:{stdPath:"",isEvaluatingGenericImplSpecialization:!0}});if(h.$&&Y(h.$.value))return{type:h.$.value.type,value:h.$.value}}catch{}}}let u=s.fields[l],c=o.traitValue.fields[l]??u.assignedValue;if(!(!c||!Y(c))){if(!z(c.value))return{type:c.type,value:c};for(let f of o.forallParameters)if(f.kind==="type"&&f.someType===c.value){let p=a.substitutions.get(f.name);if(p){let _=_e(p);return{type:_.type,value:_}}}}}}function Kp({concreteType:e,traitType:t,methodName:n,env:r}){let i=gu(t),o=Vi.get(i);if(!(!o||o.length===0))for(let a of o){let s=Tu({concreteType:e,impl:a,env:r});if(!s.matched)continue;let l=a.traitType,u=a.traitValue,c=l.fields.findIndex(f=>f.label===n&&te(f.type));if(c>=0){let f=l.fields[c];if(te(f.type)){let p=u.fields[c];if($e(p)&&(s.valueSubstitutions.size>0||s.substitutions.size>0)){let _=a.definitionEnv,d=Ct(_);for(let[E,$]of s.substitutions){let{env:C}=Be({env:d,variable:{name:E,type:Ht(),isCompileTimeOnly:!0,value:[_e($)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});d=C}for(let[E,$]of s.valueSubstitutions){let{env:C}=Be({env:d,variable:{name:E,type:$.type,isCompileTimeOnly:!0,value:[$],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});d=C}let g=yu({functionType:f.type,specializedEnv:d,SelfType:s.substitutions.get("Self")});d=Ct(d,g.parametersFrame);let y=mt(p.body),h=gn({expr:y,env:d,context:{isEvaluatingGenericImplSpecialization:!0,expectedType:{type:g.return.type,env:d},stdPath:"",isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:g,value:p,evaluationEnv:d},functionReturnImplConcreteType:[],SelfType:s.substitutions.get("Self")},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),v={...p,specializedType:g,body:h,funcId:`${p.funcId}_specialized_${[...s.substitutions.entries()].map(([E,$])=>`${E}_${x($)}`).join("_")}_${[...s.valueSubstitutions.entries()].map(([E,$])=>`${E}_${vt($)}`).join("_")}`,funcName:p.funcName?`${p.funcName}_specialized`:void 0};return{type:g,value:v}}else if($e(p)){let _={...p,specializedType:f.type};return{type:f.type,value:_}}else return{type:f.type,value:p}}}}}function Tu({concreteType:e,impl:t,env:n}){let r={matched:!1,substitutions:new Map,valueSubstitutions:new Map};if(z(e)){let o=Gn(n,e);if(z(o))return r;e=o}let i=Ct(n);for(let o of t.forallParameters)if(o.kind==="type"){let{env:a}=Be({env:i,variable:{name:o.name,type:Ht(),isCompileTimeOnly:!0,value:[_e(o.someType)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});i=a}else{let{env:a}=Be({env:i,variable:{name:o.name,type:o.type,isCompileTimeOnly:!0,value:[o.unknownValue],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});i=a}try{let{expectedEnv:o}=Ut({type:t.receiverTypePattern,env:i},{type:e,env:n});for(let{someType:l,traitType:u,traitExpr:c}of t.whereConstraints){let f=jp(o,l);if(!f)return r;let p=u;if(c)try{let _=mt(c),d=R({expr:_,env:o,context:{stdPath:"",isEvaluatingGenericImplSpecialization:!0}});d.$&&Y(d.$.value)&&ht(d.$.value.value)&&(p=d.$.value.value)}catch{}if(p.isNegatedConstraint){if(z(f)){if(!HE(f,p,n))return r;continue}if(Mn({targetType:f,traitType:p,env:n}))return r;continue}if(z(f)){if(!qE(f,p,n))return r;continue}if(!Mn({targetType:f,traitType:p,env:o}))return r}let a=new Map,s=new Map;for(let l of t.forallParameters)if(l.kind==="type"){let u=jp(o,l.someType);u&&!z(u)&&a.set(l.name,u)}else{let u=ue(o,l.name),c=u[u.length-1];if(c&&c.value&&!Ge(c.value[0])){let f={...c.value[0],type:l.type};s.set(l.name,f)}}return a.set("Self",e),{matched:!0,substitutions:a,valueSubstitutions:s}}catch{return r}}function qE(e,t,n){if(!t.typeName)return!1;for(let o of e.requiredTraits)if(o.traitType.id===t.id)return!0;let i=ci(n,e);if(i){for(let o of i.requiredTraits)if(o.id===t.id)return!0}for(let o of e.trait.fields)if(mn(o.assignedValue)&&o.assignedValue.type.id===t.id)return!0;return!1}function HE(e,t,n){if(!t.typeName)return!1;if(e.negativeTraits){for(let o of e.negativeTraits)if(o.traitType.id===t.id)return!0}let i=ci(n,e);if(i){for(let o of i.negativeTraits)if(o.id===t.id)return!0}return!1}function jE({receiverTypePattern:e,traitType:t,whereConstraints:n,env:r,errorToken:i}){if(t.selfConstraints&&t.selfConstraints.length>0)for(let o of t.selfConstraints){if(Mn({targetType:e,traitType:o,env:r}))continue;let a=new Set;for(let s of n)s.traitType.typeName===o.typeName&&!s.traitType.isNegatedConstraint&&a.add(s.someType.name);throw m({token:i,errorMessage:`Generic impl receiver type "${x(e)}" does not satisfy constraint "${o.typeName??x(o)}" required by trait "${t.typeName??x(t)}".
178
+ Current module: ${n}`})}function hu({concreteType:e,traitType:t,env:n}){let r=gu(t),i=Di.get(r);if(!(!i||i.length===0)){for(let o of i)if(Tu({concreteType:e,impl:o,env:n}).matched)return o}}function Mi({concreteType:e,methodName:t,env:n}){if(z(e)){let i=Gn(n,e);z(i)||(e=i)}let r=[];for(let[i,o]of Di.entries())for(let a of o){let s=Tu({concreteType:e,impl:a,env:n});if(!s.matched)continue;let l=a.traitType,u=a.traitValue,c=l.fields.findIndex(f=>f.label===t&&te(f.type));if(c>=0){let f=l.fields[c];if(te(f.type)){let p=u.fields[c],_=Yi(e);if($e(p)&&(s.valueSubstitutions.size>0||s.substitutions.size>0)&&!_){let g=a.definitionEnv,y=Ct(g);for(let[C,w]of s.substitutions){let{env:k}=Be({env:y,variable:{name:C,type:Ht(),isCompileTimeOnly:!0,value:[_e(w)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=k}for(let[C,w]of s.valueSubstitutions){let{env:k}=Be({env:y,variable:{name:C,type:w.type,isCompileTimeOnly:!0,value:[w],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=k}if(a.traitTypeArgExprs&&a.traitFunctionParamNames&&a.traitTypeArgExprs.length===a.traitFunctionParamNames.length)for(let C=0;C<a.traitTypeArgExprs.length;C++){let w=a.traitTypeArgExprs[C],k=a.traitFunctionParamNames[C],b=R({expr:mt(w),env:y,context:{isEvaluatingGenericImplSpecialization:!0,stdPath:""}});if(b.$&&Y(b.$.value)){let{env:A}=Be({env:y,variable:{name:k,type:Ht(),isCompileTimeOnly:!0,value:[b.$.value],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});y=A}}let h=yu({functionType:f.type,specializedEnv:y,SelfType:s.substitutions.get("Self")});y=Ct(y,h.parametersFrame);let v=mt(p.body),E=gn({expr:v,env:y,context:{isEvaluatingGenericImplSpecialization:!0,expectedType:{type:h.return.type,env:y},stdPath:"",isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:h,value:p,evaluationEnv:y},functionReturnImplConcreteType:[],SelfType:s.substitutions.get("Self")},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),$={...p,specializedType:h,body:E,funcId:`${p.funcId}_specialized_${[...s.substitutions.entries()].map(([C,w])=>`${C}_${x(w)}`).join("_")}_${[...s.valueSubstitutions.entries()].map(([C,w])=>`${C}_${vt(w)}`).join("_")}`,funcName:p.funcName?`${p.funcName}_specialized`:void 0};r.push({type:h,value:$})}else if(_){let g=a.definitionEnv,y=Ct(g);for(let[v,E]of s.substitutions){let{env:$}=Be({env:y,variable:{name:v,type:Ht(),isCompileTimeOnly:!0,value:[_e(E)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}for(let[v,E]of s.valueSubstitutions){let{env:$}=Be({env:y,variable:{name:v,type:E.type,isCompileTimeOnly:!0,value:[E],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}let h=yu({functionType:f.type,specializedEnv:y,SelfType:s.substitutions.get("Self")});r.push({type:h,value:void 0})}else if($e(p)){let g={...p,specializedType:f.type};r.push({type:f.type,value:g})}else if(!$e(p)&&(s.substitutions.size>0||s.valueSubstitutions.size>0)){let g=a.definitionEnv,y=Ct(g);for(let[v,E]of s.substitutions){let{env:$}=Be({env:y,variable:{name:v,type:Ht(),isCompileTimeOnly:!0,value:[_e(E)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}for(let[v,E]of s.valueSubstitutions){let{env:$}=Be({env:y,variable:{name:v,type:E.type,isCompileTimeOnly:!0,value:[E],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});y=$}let h=yu({functionType:f.type,specializedEnv:y,SelfType:s.substitutions.get("Self")});r.push({type:h,value:p})}else r.push({type:f.type,value:p})}}}return r}function vu({concreteType:e,propertyName:t,env:n}){if(z(e)){let r=Gn(n,e);z(r)||(e=r)}for(let[r,i]of Di.entries())for(let o of i){let a;try{a=Tu({concreteType:e,impl:o,env:n})}catch{continue}if(!a.matched)continue;let s=o.traitType,l=s.fields.findIndex(f=>f.label===t&&!te(f.type));if(l<0)continue;if(o.traitTypeArgExprs&&o.traitFunctionParamNames&&o.traitTypeArgExprs.length===o.traitFunctionParamNames.length){let f=o.definitionEnv,p=Ct(f);for(let[_,d]of a.substitutions){let{env:g}=Be({env:p,variable:{name:_,type:Ht(),isCompileTimeOnly:!0,value:[_e(d)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});p=g}for(let _=0;_<o.traitTypeArgExprs.length;_++){let d=o.traitTypeArgExprs[_];if(o.traitFunctionParamNames[_]===t)try{let y=mt(d),h=R({expr:y,env:p,context:{stdPath:"",isEvaluatingGenericImplSpecialization:!0}});if(h.$&&Y(h.$.value))return{type:h.$.value.type,value:h.$.value}}catch{}}}let u=s.fields[l],c=o.traitValue.fields[l]??u.assignedValue;if(!(!c||!Y(c))){if(!z(c.value))return{type:c.type,value:c};for(let f of o.forallParameters)if(f.kind==="type"&&f.someType===c.value){let p=a.substitutions.get(f.name);if(p){let _=_e(p);return{type:_.type,value:_}}}}}}function Kp({concreteType:e,traitType:t,methodName:n,env:r}){let i=gu(t),o=Di.get(i);if(!(!o||o.length===0))for(let a of o){let s=Tu({concreteType:e,impl:a,env:r});if(!s.matched)continue;let l=a.traitType,u=a.traitValue,c=l.fields.findIndex(f=>f.label===n&&te(f.type));if(c>=0){let f=l.fields[c];if(te(f.type)){let p=u.fields[c];if($e(p)&&(s.valueSubstitutions.size>0||s.substitutions.size>0)){let _=a.definitionEnv,d=Ct(_);for(let[E,$]of s.substitutions){let{env:C}=Be({env:d,variable:{name:E,type:Ht(),isCompileTimeOnly:!0,value:[_e($)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});d=C}for(let[E,$]of s.valueSubstitutions){let{env:C}=Be({env:d,variable:{name:E,type:$.type,isCompileTimeOnly:!0,value:[$],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});d=C}let g=yu({functionType:f.type,specializedEnv:d,SelfType:s.substitutions.get("Self")});d=Ct(d,g.parametersFrame);let y=mt(p.body),h=gn({expr:y,env:d,context:{isEvaluatingGenericImplSpecialization:!0,expectedType:{type:g.return.type,env:d},stdPath:"",isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:g,value:p,evaluationEnv:d},functionReturnImplConcreteType:[],SelfType:s.substitutions.get("Self")},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),v={...p,specializedType:g,body:h,funcId:`${p.funcId}_specialized_${[...s.substitutions.entries()].map(([E,$])=>`${E}_${x($)}`).join("_")}_${[...s.valueSubstitutions.entries()].map(([E,$])=>`${E}_${vt($)}`).join("_")}`,funcName:p.funcName?`${p.funcName}_specialized`:void 0};return{type:g,value:v}}else if($e(p)){let _={...p,specializedType:f.type};return{type:f.type,value:_}}else return{type:f.type,value:p}}}}}function Tu({concreteType:e,impl:t,env:n}){let r={matched:!1,substitutions:new Map,valueSubstitutions:new Map};if(z(e)){let o=Gn(n,e);if(z(o))return r;e=o}let i=Ct(n);for(let o of t.forallParameters)if(o.kind==="type"){let{env:a}=Be({env:i,variable:{name:o.name,type:Ht(),isCompileTimeOnly:!0,value:[_e(o.someType)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});i=a}else{let{env:a}=Be({env:i,variable:{name:o.name,type:o.type,isCompileTimeOnly:!0,value:[o.unknownValue],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});i=a}try{let{expectedEnv:o}=Ut({type:t.receiverTypePattern,env:i},{type:e,env:n});for(let{someType:l,traitType:u,traitExpr:c}of t.whereConstraints){let f=jp(o,l);if(!f)return r;let p=u;if(c)try{let _=mt(c),d=R({expr:_,env:o,context:{stdPath:"",isEvaluatingGenericImplSpecialization:!0}});d.$&&Y(d.$.value)&&ht(d.$.value.value)&&(p=d.$.value.value)}catch{}if(p.isNegatedConstraint){if(z(f)){if(!HE(f,p,n))return r;continue}if(Mn({targetType:f,traitType:p,env:n}))return r;continue}if(z(f)){if(!qE(f,p,n))return r;continue}if(!Mn({targetType:f,traitType:p,env:o}))return r}let a=new Map,s=new Map;for(let l of t.forallParameters)if(l.kind==="type"){let u=jp(o,l.someType);u&&!z(u)&&a.set(l.name,u)}else{let u=ue(o,l.name),c=u[u.length-1];if(c&&c.value&&!Ge(c.value[0])){let f={...c.value[0],type:l.type};s.set(l.name,f)}}return a.set("Self",e),{matched:!0,substitutions:a,valueSubstitutions:s}}catch{return r}}function qE(e,t,n){if(!t.typeName)return!1;for(let o of e.requiredTraits)if(o.traitType.id===t.id)return!0;let i=ci(n,e);if(i){for(let o of i.requiredTraits)if(o.id===t.id)return!0}for(let o of e.trait.fields)if(mn(o.assignedValue)&&o.assignedValue.type.id===t.id)return!0;return!1}function HE(e,t,n){if(!t.typeName)return!1;if(e.negativeTraits){for(let o of e.negativeTraits)if(o.traitType.id===t.id)return!0}let i=ci(n,e);if(i){for(let o of i.negativeTraits)if(o.id===t.id)return!0}return!1}function jE({receiverTypePattern:e,traitType:t,whereConstraints:n,env:r,errorToken:i}){if(t.selfConstraints&&t.selfConstraints.length>0)for(let o of t.selfConstraints){if(Mn({targetType:e,traitType:o,env:r}))continue;let a=new Set;for(let s of n)s.traitType.typeName===o.typeName&&!s.traitType.isNegatedConstraint&&a.add(s.someType.name);throw m({token:i,errorMessage:`Generic impl receiver type "${x(e)}" does not satisfy constraint "${o.typeName??x(o)}" required by trait "${t.typeName??x(t)}".
179
179
  Consider adding "where(T <: ${o.typeName??x(o)})" to the impl.`})}if(t.negativeSelfConstraints&&t.negativeSelfConstraints.length>0){for(let o of t.negativeSelfConstraints)if(Mn({targetType:e,traitType:o,env:r}))throw m({token:i,errorMessage:`Generic impl receiver type "${x(e)}" implements "${o.typeName??x(o)}" but trait "${t.typeName??x(t)}" requires it to NOT implement this trait.
180
180
  Consider adding "where(T <: !(${o.typeName??x(o)}))" to the impl.`})}}function jp(e,t){for(let n=e.frames.length-1;n>=0;n--){let r=e.frames[n];for(let i of r.variables)if(i.name===t.name&&i.value&&Y(i.value[0]))return i.value[0].value}return t}function Os(e){let t=Ds.get(e);if(t){for(let n of t)n.fields=n.fields.filter(r=>r.sourceModulePath!==e);Ds.delete(e),BE(e)}}function KE(e,t){let n=Ds.get(e);n||(n=new Set,Ds.set(e,n)),n.add(t)}function XE(e,t,n){let r=e.type.receiverType;if(!(!r||!r.trait))if(e.type.typeName&&(YE({receiverType:r,traitType:e.type,currentModulePath:n,expr:t}),GE({receiverType:r,traitType:e.type,currentModulePath:n,expr:t}),WE({receiverType:r,traitType:e.type,currentModulePath:n,expr:t})),n&&KE(n,r.trait),e.type.typeName){let i={label:"",type:Er(1),assignedValue:e,sourceModulePath:n,exprs:{expr:t}};r.trait.fields.push(i)}else for(let i=0;i<e.type.fields.length;i++){let o=e.type.fields[i],a=e.fields[i],s={label:o.label,type:o.type,assignedValue:a,sourceModulePath:n,exprs:{expr:t}};r.trait.fields.push(s)}}function Xp({expr:e,env:t,context:n}){var $,C;if(!T(e,D.impl))throw m({token:e.token,errorMessage:`Expected "impl", got:
181
- ${L(e)}`});if(e.args.length===1&&S(e.args[0])&&T(e.args[0],D.begin)){let w=e.args[0].args,{moduleType:k,moduleValue:b,env:A}=mu({beginExprs:w,env:t,context:{...n,expectedType:void 0,SelfType:n.SelfType}});return t=A,e.$={env:t,type:k,value:b,pathCollection:[]},e}let r=e.args,i=0,o,a;if(r[i]&&S(r[i])&&T(r[i],D.forall)&&(o=r[i],i++),r[i]&&S(r[i])&&T(r[i],D.where)){if(!o)throw m({token:r[i].token,errorMessage:"impl where(...) requires forall(...) and may appear before or after the receiver type."});a=r[i],i++}if(!r[i])throw m({token:e.token,errorMessage:"impl requires a receiver type and at least one field."});let s=r[i];if(i++,r[i]&&S(r[i])&&T(r[i],D.where)){if(!o)throw m({token:r[i].token,errorMessage:"impl where(...) requires forall(...) and may appear before or after the receiver type."});if(a)throw m({token:r[i].token,errorMessage:"impl supports only a single where(...) clause."});a=r[i],i++}let l=r.slice(i);if(l.length===0)throw m({token:e.token,errorMessage:"impl requires at least one field after the receiver type."});if(!o){let w=R({expr:s,env:t,context:{...n}});if(!w.$||!w.$.value||!Y(w.$.value))throw m({token:s.token,errorMessage:"Expected type for receiver type argument."});t=w.$.env;let k=w.$.value.value,b=Rt(k)||at(k),{env:A,traitEntries:I}=qp({fieldExprs:l,env:t,context:{...n},receiverType:k});if(t=A,I.length===0)throw m({token:e.token,errorMessage:"impl requires at least one trait or member field."});for(let M of I){let V=M.traitValue,O=V.type;if(M.isAnonymousTrait||Qp({targetType:k,traitType:O,env:t,errorToken:e.token}),b){let W=gu(O),P={forallParameters:[],whereConstraints:[],receiverTypePattern:k,traitType:O,traitValue:V,expr:e,sourceModulePath:n.currentModulePath,definitionEnv:t};Hp(W,P)}else XE(V,e,n.currentModulePath)}let N=I[0].traitValue;return e.$={env:t,type:N.type,value:N,pathCollection:[]},e}let c=o.args,f=[];t=Ct(t);for(let w of c){let k,b;if(S(w)&&T(w,":",2)){let O=w.args[0];if(!H(O))throw m({token:O.token,errorMessage:`Expected identifier for forall parameter name, got: ${L(O)}`});k=O.token.value,b=w.args[1]}else if(H(w))k=w.token.value;else throw m({token:w.token,errorMessage:`Expected parameter name or "name : Type" for forall parameter, got: ${L(w)}`});let A;if(b){let O=R({expr:b,env:t,context:{...n}});if(($=O.$)!=null&&$.env&&(t=O.$.env),!O.$||!O.$.value||!Y(O.$.value))throw m({token:b.token,errorMessage:`Expected type for forall parameter type, got: ${L(b)}`});A=O.$.value.value}let I=!A||ap(A),N=A||Ht(),M=oe(N,{variableName:k,env:t,context:n}),{env:V}=Be({env:t,variable:{name:k,type:N,isCompileTimeOnly:!0,value:[M],token:w.token,initializedAtToken:w.token,consumedAtToken:void 0,isOwningTheRcValue:!1}});if(t=V,I){let O=M.value;f.push({kind:"type",name:k,someType:O})}else f.push({kind:"value",name:k,type:N,unknownValue:M})}let p=new Map;if(a)for(let w of a.args){if(!S(w)||!T(w,"<:",2))throw m({token:w.token,errorMessage:`Expected constraint in the form "T <: Module", got: ${L(w)}`});let k=R({expr:w,env:t,context:{...n,isInsideWhereClause:!0}});(C=k.$)!=null&&C.env&&(t=k.$.env);let b=w.args[0],A=w.args[1],I=R({expr:b,env:t,context:{...n}});if(!I.$||!I.$.value||!Y(I.$.value)||!z(I.$.value.value))throw m({token:b.token,errorMessage:`In a where clause, the left-hand side of <: must be a type parameter (SomeType), got: ${L(b)}`});t=I.$.env;let N=[];if(S(A)&&T(A,D.tuple))for(let M of A.args)S(M)&&T(M,"!")&&M.args.length===1?N.push({expr:M.args[0],isNegated:!0}):N.push({expr:M,isNegated:!1});else S(A)&&T(A,"!")&&A.args.length===1?N.push({expr:A.args[0],isNegated:!0}):N.push({expr:A,isNegated:!1});for(let{expr:M}of N){let V=R({expr:M,env:t,context:{...n}});if(!V.$||!V.$.value||!Y(V.$.value)||!ht(V.$.value.value))throw m({token:M.token,errorMessage:"Expected trait type for right-hand side expression."});t=V.$.env;let O=V.$.value.value;p.set(O.id,mt(M))}}let _=[];for(let w of f){if(w.kind!=="type")continue;let{someType:k}=w,b=ci(t,k);if(b){for(let A of b.requiredTraits)_.push({someType:k,traitType:A,traitExpr:p.get(A.id)});for(let A of b.negativeTraits){let I={...A,isNegatedConstraint:!0};_.push({someType:k,traitType:I,traitExpr:p.get(A.id)})}}}let d=R({expr:s,env:t,context:{...n}});if(!d.$||!d.$.value||!Y(d.$.value))throw m({token:s.token,errorMessage:"Expected type for receiver type pattern."});t=d.$.env;let g=d.$.value.value,{env:y,traitEntries:h}=qp({fieldExprs:l,env:t,context:{...n},receiverType:g});if(t=y,h.length===0)throw m({token:e.token,errorMessage:"impl requires at least one trait or member field."});let v=[];for(let w of h){let k=w.traitValue,b=k.type;jE({receiverTypePattern:g,traitType:b,whereConstraints:_,env:t,errorToken:e.token});let{traitTypeArgExprs:A,traitFunctionParamNames:I}=w.isAnonymousTrait?{}:zE({traitExpr:w.sourceExpr,traitType:b});v.push({traitType:b,traitValue:k,traitTypeArgExprs:A,traitFunctionParamNames:I})}t=nn(t);for(let w of v){let k=gu(w.traitType),b={forallParameters:f,whereConstraints:_,receiverTypePattern:g,traitType:w.traitType,traitValue:w.traitValue,expr:e,sourceModulePath:n.currentModulePath,definitionEnv:t,traitTypeArgExprs:w.traitTypeArgExprs,traitFunctionParamNames:w.traitFunctionParamNames};Hp(k,b)}let E=v[0].traitValue;return e.$={env:t,type:E.type,value:E,pathCollection:[]},e}var Ds,Vi,Jo,Zi=j(()=>{ft();xe();ce();pn();dt();ui();Ae();Je();ge();fi();Ke();Gt();Da();Sr();Mc();Ds=new Map;Vi=new Map,Jo=new Map});function Jp(e){if(!e||ze(e)&&e.isReferenceSemantics)return!1;switch(e.tag){case"comptime_int":case"comptime_float":case"comptime_string":case"Type":case"Module":case"Trait":case"Expr":case"ComptimeList":return!0;case"Iso":case"Arc":case"Dyn":case"void":case"Union":case"char":case"short":case"ushort":case"int":case"uint":case"long":case"ulong":case"longlong":case"ulonglong":case"longdouble":return!1;case"unit":case"bool":case"usize":case"isize":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"u64":case"i64":case"f32":case"f64":case"Function":return!0}if(Vt(e))return!0}function e_(e){if(!e)return!1;if(ze(e)&&e.isReferenceSemantics)return!0;switch(e.tag){case"comptime_int":case"comptime_float":case"comptime_string":case"Type":case"Module":case"Trait":case"Expr":case"ComptimeList":return!1;case"Iso":case"Arc":case"Dyn":case"void":case"char":case"short":case"ushort":case"int":case"uint":case"long":case"ulong":case"longlong":case"ulonglong":case"longdouble":return!0;case"unit":case"bool":case"usize":case"isize":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"u64":case"i64":case"f32":case"f64":case"Function":case"Union":return!0}}function Zp(e,t,n){if(!t.associatedTypeConstraints||t.associatedTypeConstraints.length===0)return!0;for(let r of t.associatedTypeConstraints){let i;if(e.trait)for(let o of e.trait.fields){if(o.label===r.label&&o.assignedValue&&Y(o.assignedValue)){i=o.assignedValue.value;break}if(o.assignedValue&&mn(o.assignedValue)){let a=o.assignedValue;if(a.type.id===t.id){for(let s=0;s<a.type.fields.length;s++)if(a.type.fields[s].label===r.label){let u=a.fields[s];u&&Y(u)&&(i=u.value);break}}if(i)break}}if(!i){let o=vu({concreteType:e,propertyName:r.label,env:n});o&&Y(o.value)&&(i=o.value.value)}if(!i||!ie({type:r.constraintType,env:n},{type:i,env:n}))return!1}return!0}function Mn({targetType:e,traitType:t,env:n}){let r=Xr(n,"Comptime");if(r&&t.id===r.id){let l=Jp(e);if(l!==void 0)return l}let i=Xr(n,"Runtime");if(i&&t.id===i.id){let l=e_(e);if(l!==void 0)return l}let o={...t,receiverType:e},a=e.trait;if(a)for(let l of a.fields){if(!l.assignedValue||!mn(l.assignedValue))continue;let c=l.assignedValue.type;if(ie({type:o,env:n},{type:c,env:n})&&Zp(e,t,n))return!0}if(ot(e)){for(let{traitType:l}of e.requiredTraits){if(l.id===t.id)return!0;if(l.selfConstraints){for(let u of l.selfConstraints)if(u.id===t.id)return!0}}for(let{traitType:l}of e.negativeTraits)if(l.id===t.id)return!1}if(z(e)){let l=!1,u=!1;for(let f of e.requiredTraits)f.traitType.id===t.id&&(l=!0);let c=ci(n,e);if(c){for(let f of c.requiredTraits)f.id===t.id&&(l=!0);for(let f of c.negativeTraits)f.id===t.id&&(u=!0)}if(e.negativeTraits)for(let f of e.negativeTraits)f.traitType.id===t.id&&(u=!0);if(l)return!u;if(u)return!1}if(z(e)){let l=Gn(n,e);if(z(l))return!1;e=l}let s=`${e.id}:${t.id}`;if(Oc.has(s))return!1;Oc.add(s);try{return hu({concreteType:e,traitType:t,env:n})===void 0?!1:Zp(e,t,n)}finally{Oc.delete(s)}}function Qp({targetType:e,traitType:t,env:n,errorToken:r}){if(t.selfConstraints&&t.selfConstraints.length>0){for(let i of t.selfConstraints)if(!Mn({targetType:e,traitType:i,env:n}))throw m({token:r,errorMessage:`Type "${x(e)}" does not implement required constraint "${i.typeName??x(i)}" from trait "${t.typeName??x(t)}"'s where clause.`})}if(t.negativeSelfConstraints&&t.negativeSelfConstraints.length>0){for(let i of t.negativeSelfConstraints)if(Mn({targetType:e,traitType:i,env:n}))throw m({token:r,errorMessage:`Type "${x(e)}" implements "${i.typeName??x(i)}" but the trait "${t.typeName??x(t)}"'s where clause requires it to NOT implement this trait.`})}}function hi(e,t){let n=Jp(e);if(n!==void 0)return n;let r=Xr(t,"Comptime");return r?Mn({targetType:e,traitType:r,env:t}):!1}function Ki(e,t){let n=e_(e);if(n!==void 0)return n;let r=Xr(t,"Runtime");return r?Mn({targetType:e,traitType:r,env:t}):!1}function As(e,t){if(!e)return!1;let n=Xr(t,"Send");return n?Mn({targetType:e,traitType:n,env:t}):!1}function zo(e,t){if(!e)return!1;let n=Xr(t,"Acyclic");return n?Mn({targetType:e,traitType:n,env:t}):!1}function qo(e,t){return hi(e,t)&&!Ki(e,t)}function Qn(e){if(!e)return!1;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(wn(t))return!0}return!1}function or(e){if(wn(e))return e;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(wn(t))return t}}function rt(e){if(!e)return!1;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(Kn(t))return!0}return!1}function Un(e){if(Kn(e))return e;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(Kn(t))return t}}function Al(e,t,n,r){if(!lt(e)&&!hi(e,t)&&!Ki(e,t))throw m({token:n,errorMessage:`Type ${x(e)} has incompatible field contexts and cannot be used in any evaluation context.
181
+ ${L(e)}`});if(e.args.length===1&&S(e.args[0])&&T(e.args[0],D.begin)){let w=e.args[0].args,{moduleType:k,moduleValue:b,env:A}=mu({beginExprs:w,env:t,context:{...n,expectedType:void 0,SelfType:n.SelfType}});return t=A,e.$={env:t,type:k,value:b,pathCollection:[]},e}let r=e.args,i=0,o,a;if(r[i]&&S(r[i])&&T(r[i],D.forall)&&(o=r[i],i++),r[i]&&S(r[i])&&T(r[i],D.where)){if(!o)throw m({token:r[i].token,errorMessage:"impl where(...) requires forall(...) and may appear before or after the receiver type."});a=r[i],i++}if(!r[i])throw m({token:e.token,errorMessage:"impl requires a receiver type and at least one field."});let s=r[i];if(i++,r[i]&&S(r[i])&&T(r[i],D.where)){if(!o)throw m({token:r[i].token,errorMessage:"impl where(...) requires forall(...) and may appear before or after the receiver type."});if(a)throw m({token:r[i].token,errorMessage:"impl supports only a single where(...) clause."});a=r[i],i++}let l=r.slice(i);if(l.length===0)throw m({token:e.token,errorMessage:"impl requires at least one field after the receiver type."});if(!o){let w=R({expr:s,env:t,context:{...n}});if(!w.$||!w.$.value||!Y(w.$.value))throw m({token:s.token,errorMessage:"Expected type for receiver type argument."});t=w.$.env;let k=w.$.value.value,b=Rt(k)||at(k),{env:A,traitEntries:I}=qp({fieldExprs:l,env:t,context:{...n},receiverType:k});if(t=A,I.length===0)throw m({token:e.token,errorMessage:"impl requires at least one trait or member field."});for(let M of I){let V=M.traitValue,O=V.type;if(M.isAnonymousTrait||Qp({targetType:k,traitType:O,env:t,errorToken:e.token}),b){let W=gu(O),P={forallParameters:[],whereConstraints:[],receiverTypePattern:k,traitType:O,traitValue:V,expr:e,sourceModulePath:n.currentModulePath,definitionEnv:t};Hp(W,P)}else XE(V,e,n.currentModulePath)}let N=I[0].traitValue;return e.$={env:t,type:N.type,value:N,pathCollection:[]},e}let c=o.args,f=[];t=Ct(t);for(let w of c){let k,b;if(S(w)&&T(w,":",2)){let O=w.args[0];if(!H(O))throw m({token:O.token,errorMessage:`Expected identifier for forall parameter name, got: ${L(O)}`});k=O.token.value,b=w.args[1]}else if(H(w))k=w.token.value;else throw m({token:w.token,errorMessage:`Expected parameter name or "name : Type" for forall parameter, got: ${L(w)}`});let A;if(b){let O=R({expr:b,env:t,context:{...n}});if(($=O.$)!=null&&$.env&&(t=O.$.env),!O.$||!O.$.value||!Y(O.$.value))throw m({token:b.token,errorMessage:`Expected type for forall parameter type, got: ${L(b)}`});A=O.$.value.value}let I=!A||ap(A),N=A||Ht(),M=oe(N,{variableName:k,env:t,context:n}),{env:V}=Be({env:t,variable:{name:k,type:N,isCompileTimeOnly:!0,value:[M],token:w.token,initializedAtToken:w.token,consumedAtToken:void 0,isOwningTheRcValue:!1}});if(t=V,I){let O=M.value;f.push({kind:"type",name:k,someType:O})}else f.push({kind:"value",name:k,type:N,unknownValue:M})}let p=new Map;if(a)for(let w of a.args){if(!S(w)||!T(w,"<:",2))throw m({token:w.token,errorMessage:`Expected constraint in the form "T <: Module", got: ${L(w)}`});let k=R({expr:w,env:t,context:{...n,isInsideWhereClause:!0}});(C=k.$)!=null&&C.env&&(t=k.$.env);let b=w.args[0],A=w.args[1],I=R({expr:b,env:t,context:{...n}});if(!I.$||!I.$.value||!Y(I.$.value)||!z(I.$.value.value))throw m({token:b.token,errorMessage:`In a where clause, the left-hand side of <: must be a type parameter (SomeType), got: ${L(b)}`});t=I.$.env;let N=[];if(S(A)&&T(A,D.tuple))for(let M of A.args)S(M)&&T(M,"!")&&M.args.length===1?N.push({expr:M.args[0],isNegated:!0}):N.push({expr:M,isNegated:!1});else S(A)&&T(A,"!")&&A.args.length===1?N.push({expr:A.args[0],isNegated:!0}):N.push({expr:A,isNegated:!1});for(let{expr:M}of N){let V=R({expr:M,env:t,context:{...n}});if(!V.$||!V.$.value||!Y(V.$.value)||!ht(V.$.value.value))throw m({token:M.token,errorMessage:"Expected trait type for right-hand side expression."});t=V.$.env;let O=V.$.value.value;p.set(O.id,mt(M))}}let _=[];for(let w of f){if(w.kind!=="type")continue;let{someType:k}=w,b=ci(t,k);if(b){for(let A of b.requiredTraits)_.push({someType:k,traitType:A,traitExpr:p.get(A.id)});for(let A of b.negativeTraits){let I={...A,isNegatedConstraint:!0};_.push({someType:k,traitType:I,traitExpr:p.get(A.id)})}}}let d=R({expr:s,env:t,context:{...n}});if(!d.$||!d.$.value||!Y(d.$.value))throw m({token:s.token,errorMessage:"Expected type for receiver type pattern."});t=d.$.env;let g=d.$.value.value,{env:y,traitEntries:h}=qp({fieldExprs:l,env:t,context:{...n},receiverType:g});if(t=y,h.length===0)throw m({token:e.token,errorMessage:"impl requires at least one trait or member field."});let v=[];for(let w of h){let k=w.traitValue,b=k.type;jE({receiverTypePattern:g,traitType:b,whereConstraints:_,env:t,errorToken:e.token});let{traitTypeArgExprs:A,traitFunctionParamNames:I}=w.isAnonymousTrait?{}:zE({traitExpr:w.sourceExpr,traitType:b});v.push({traitType:b,traitValue:k,traitTypeArgExprs:A,traitFunctionParamNames:I})}t=nn(t);for(let w of v){let k=gu(w.traitType),b={forallParameters:f,whereConstraints:_,receiverTypePattern:g,traitType:w.traitType,traitValue:w.traitValue,expr:e,sourceModulePath:n.currentModulePath,definitionEnv:t,traitTypeArgExprs:w.traitTypeArgExprs,traitFunctionParamNames:w.traitFunctionParamNames};Hp(k,b)}let E=v[0].traitValue;return e.$={env:t,type:E.type,value:E,pathCollection:[]},e}var Ds,Di,Jo,Zi=j(()=>{ft();xe();ce();pn();dt();ui();Ae();Je();ge();fi();Ke();Gt();Da();Sr();Mc();Ds=new Map;Di=new Map,Jo=new Map});function Jp(e){if(!e||ze(e)&&e.isReferenceSemantics)return!1;switch(e.tag){case"comptime_int":case"comptime_float":case"comptime_string":case"Type":case"Module":case"Trait":case"Expr":case"ComptimeList":return!0;case"Iso":case"Arc":case"Dyn":case"void":case"Union":case"char":case"short":case"ushort":case"int":case"uint":case"long":case"ulong":case"longlong":case"ulonglong":case"longdouble":return!1;case"unit":case"bool":case"usize":case"isize":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"u64":case"i64":case"f32":case"f64":case"Function":return!0}if(Vt(e))return!0}function e_(e){if(!e)return!1;if(ze(e)&&e.isReferenceSemantics)return!0;switch(e.tag){case"comptime_int":case"comptime_float":case"comptime_string":case"Type":case"Module":case"Trait":case"Expr":case"ComptimeList":return!1;case"Iso":case"Arc":case"Dyn":case"void":case"char":case"short":case"ushort":case"int":case"uint":case"long":case"ulong":case"longlong":case"ulonglong":case"longdouble":return!0;case"unit":case"bool":case"usize":case"isize":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"u64":case"i64":case"f32":case"f64":case"Function":case"Union":return!0}}function Zp(e,t,n){if(!t.associatedTypeConstraints||t.associatedTypeConstraints.length===0)return!0;for(let r of t.associatedTypeConstraints){let i;if(e.trait)for(let o of e.trait.fields){if(o.label===r.label&&o.assignedValue&&Y(o.assignedValue)){i=o.assignedValue.value;break}if(o.assignedValue&&mn(o.assignedValue)){let a=o.assignedValue;if(a.type.id===t.id){for(let s=0;s<a.type.fields.length;s++)if(a.type.fields[s].label===r.label){let u=a.fields[s];u&&Y(u)&&(i=u.value);break}}if(i)break}}if(!i){let o=vu({concreteType:e,propertyName:r.label,env:n});o&&Y(o.value)&&(i=o.value.value)}if(!i||!ie({type:r.constraintType,env:n},{type:i,env:n}))return!1}return!0}function Mn({targetType:e,traitType:t,env:n}){let r=Xr(n,"Comptime");if(r&&t.id===r.id){let l=Jp(e);if(l!==void 0)return l}let i=Xr(n,"Runtime");if(i&&t.id===i.id){let l=e_(e);if(l!==void 0)return l}let o={...t,receiverType:e},a=e.trait;if(a)for(let l of a.fields){if(!l.assignedValue||!mn(l.assignedValue))continue;let c=l.assignedValue.type;if(ie({type:o,env:n},{type:c,env:n})&&Zp(e,t,n))return!0}if(ot(e)){for(let{traitType:l}of e.requiredTraits){if(l.id===t.id)return!0;if(l.selfConstraints){for(let u of l.selfConstraints)if(u.id===t.id)return!0}}for(let{traitType:l}of e.negativeTraits)if(l.id===t.id)return!1}if(z(e)){let l=!1,u=!1;for(let f of e.requiredTraits)f.traitType.id===t.id&&(l=!0);let c=ci(n,e);if(c){for(let f of c.requiredTraits)f.id===t.id&&(l=!0);for(let f of c.negativeTraits)f.id===t.id&&(u=!0)}if(e.negativeTraits)for(let f of e.negativeTraits)f.traitType.id===t.id&&(u=!0);if(l)return!u;if(u)return!1}if(z(e)){let l=Gn(n,e);if(z(l))return!1;e=l}let s=`${e.id}:${t.id}`;if(Oc.has(s))return!1;Oc.add(s);try{return hu({concreteType:e,traitType:t,env:n})===void 0?!1:Zp(e,t,n)}finally{Oc.delete(s)}}function Qp({targetType:e,traitType:t,env:n,errorToken:r}){if(t.selfConstraints&&t.selfConstraints.length>0){for(let i of t.selfConstraints)if(!Mn({targetType:e,traitType:i,env:n}))throw m({token:r,errorMessage:`Type "${x(e)}" does not implement required constraint "${i.typeName??x(i)}" from trait "${t.typeName??x(t)}"'s where clause.`})}if(t.negativeSelfConstraints&&t.negativeSelfConstraints.length>0){for(let i of t.negativeSelfConstraints)if(Mn({targetType:e,traitType:i,env:n}))throw m({token:r,errorMessage:`Type "${x(e)}" implements "${i.typeName??x(i)}" but the trait "${t.typeName??x(t)}"'s where clause requires it to NOT implement this trait.`})}}function vi(e,t){let n=Jp(e);if(n!==void 0)return n;let r=Xr(t,"Comptime");return r?Mn({targetType:e,traitType:r,env:t}):!1}function Ki(e,t){let n=e_(e);if(n!==void 0)return n;let r=Xr(t,"Runtime");return r?Mn({targetType:e,traitType:r,env:t}):!1}function As(e,t){if(!e)return!1;let n=Xr(t,"Send");return n?Mn({targetType:e,traitType:n,env:t}):!1}function zo(e,t){if(!e)return!1;let n=Xr(t,"Acyclic");return n?Mn({targetType:e,traitType:n,env:t}):!1}function qo(e,t){return vi(e,t)&&!Ki(e,t)}function Qn(e){if(!e)return!1;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(wn(t))return!0}return!1}function or(e){if(wn(e))return e;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(wn(t))return t}}function rt(e){if(!e)return!1;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(Kn(t))return!0}return!1}function Un(e){if(Kn(e))return e;if(z(e)||ot(e)){for(let{traitType:t}of e.requiredTraits)if(Kn(t))return t}}function Al(e,t,n,r){if(!lt(e)&&!vi(e,t)&&!Ki(e,t))throw m({token:n,errorMessage:`Type ${x(e)} has incompatible field contexts and cannot be used in any evaluation context.
182
182
 
183
183
  This typically happens when a struct/enum/array/tuple contains fields with conflicting availability:
184
184
  - Compile-time only fields (e.g., comptime_int, Type, Module)
185
185
  - Runtime only fields (e.g., *(T), [T], void, C-compatible types)
186
186
 
187
- Consider restructuring the type to avoid mixing incompatible field types.`})}var Oc,Gt=j(()=>{ft();xe();Qt();ui();Ae();Mr();Je();ge();Zi();Oc=new Set});function ur(e,t=!0,n){switch(e.tag){case"ComptimeInt":case"ComptimeFloat":case"U8":case"I8":case"U16":case"I16":case"U32":case"I32":case"U64":case"I64":case"F32":case"F64":case"Usize":case"Isize":return e;case"Bool":return e;case"Unit":return e;case"ComptimeString":return e;case"Type":return e;case"Function":return e;case"Expr":return e;case"Unknown":return e;case"Ptr":{if(t)return e;let r=e;if(n){let a=n.get(r.targetValue);if(a)return{...r,targetValue:a,targetIndex:r.targetIndex}}let o=[ur(r.targetValue[0],t,n)];return n&&n.set(r.targetValue,o),{...r,targetValue:o,targetIndex:r.targetIndex}}case"Tuple":{let r=e;return{...r,fields:r.fields.map(i=>ur(i,t,n))}}case"Struct":{let r=e;return{...r,fields:r.fields.map(i=>ur(i,t,n))}}case"Enum":{let r=e;return{...r,fields:r.fields.map(i=>ur(i,t,n))}}case"Array":{let r=e;return{...r,elements:r.elements.map(i=>ur(i,t,n))}}case"Slice":{if(t)return e;let r=e;if(n){let a=n.get(r.sourceArray);if(a)return{...r,sourceArray:a}}let o=[ur(r.sourceArray[0],t,n)];return n&&n.set(r.sourceArray,o),{...r,sourceArray:o}}case"ComptimeList":{let r=e;return{...r,elements:r.elements.map(i=>ur(i,t,n))}}case"Module":{let r=e;return{...r,fields:r.fields.map(i=>i?ur(i,t,n):void 0)}}case"Trait":{let r=e;return{...r,fields:r.fields.map(i=>i?ur(i,t,n):void 0)}}default:return e}}var Rs=j(()=>{_r()});function Rc({modulePath:e,inputString:t}){return{functionDeclarationFrameLevel:-1,frames:[],modulePath:e,inputString:t}}function Zt(){let e=Rc({modulePath:"",inputString:""});return Ct(e)}function Pc(e){let t=new Map,n=[...e.frames.flatMap(o=>o.variables)];for(let o of n)if(o.value&&!t.has(o.value)){let a=ur(o.value[0],!1,t);t.has(o.value)||t.set(o.value,[a])}let r=o=>{if(!o.value)return{...o};let a=t.get(o.value);if(a)return{...o,value:a};let s=ur(o.value[0],!1,t);return{...o,value:[s]}},i=o=>({...o,variables:o.variables.map(r),whereClauseConstraints:QE(o.whereClauseConstraints)});return{...e,frames:e.frames.map(i)}}function QE(e){let t=new Map;for(let[n,r]of e)t.set(n,{someType:r.someType,requiredTraits:[...r.requiredTraits],negativeTraits:[...r.negativeTraits]});return t}function Ti({env:e,someType:t,traitType:n,isNegated:r}){let i=e.frames.length-1,o=e.frames[i];if(!o)return e;let a=t.id,s=o.whereClauseConstraints.get(a);s||(s={someType:t,requiredTraits:[],negativeTraits:[]},o.whereClauseConstraints.set(a,s));let l=r?s.negativeTraits:s.requiredTraits;return l.some(u=>u.id===n.id)||l.push(n),e}function ci(e,t){var l;let n=[],r=[],i=new Set,o=new Set,a=!1,s=new Set;for(let u of e.frames)for(let c of u.variables){let f=(l=c.value)==null?void 0:l[0];Y(f)&&z(f.value)&&f.value.id===t.id&&s.add(c.name)}for(let u of e.frames)for(let c of u.whereClauseConstraints.values())if(!(c.someType.id!==t.id&&!s.has(c.someType.name))){a=!0;for(let f of c.requiredTraits)i.has(f.id)||(i.add(f.id),n.push(f));for(let f of c.negativeTraits)o.has(f.id)||(o.add(f.id),r.push(f))}if(a)return{requiredTraits:n,negativeTraits:r}}function n_(e){t_=e}function $o(){t_=null}function Be({env:e,variable:t,deltaFrame:n,variableId:r,addToBeginBlockFrame:i,allowVariableShadowing:o}){let a=e.frames.length-1+(n??0);if(i){let _=t$(e);_>=0&&(a=_)}if(t.name!==ZE){let _=ue(e,t.name);if(_.length>0&&!o){let d=_[_.length-1];throw tn([{token:t.token,errorMessage:`Failed to define variable "${t.name}":`},{token:d.token,errorMessage:`Variable "${t.name}" is already defined here (variable shadowing is not allowed):`}])}}let s=e.frames[a];if(!s)throw console.trace(`Frame at level ${a} does not exist in the environment.`),new Error(`Frame at level ${a} does not exist in the environment.`);let l=en(e.modulePath,t.name)?t.name:r??Mo(e.modulePath,t.name),u={...t,frameLevel:a,id:l},c=JE({frame:s,variable:u}),f=e.frames.slice();return f[a]=c,{env:{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:f,modulePath:e.modulePath,inputString:e.inputString},variable:u}}function JE({frame:e,variable:t}){if(t.name==="_")return e;if(e.variables.some(r=>r.name===t.name))throw tn([{token:t.token,errorMessage:`Failed to define variable "${t.name}":`},{token:e.variables.find(r=>r.name===t.name).token,errorMessage:`Variable "${t.name}" is already defined here in the same scope:`}]);let n=e.variables.findIndex(r=>r.name===t.name&&!r.initializedAtToken);if(n>-1){let r=e.variables.slice();return r[n]=t,{id:e.id,variables:r,isBeginBlockFrame:e.isBeginBlockFrame,whereClauseConstraints:new Map(e.whereClauseConstraints)}}return{id:e.id,variables:[...e.variables,t],isBeginBlockFrame:e.isBeginBlockFrame,whereClauseConstraints:new Map(e.whereClauseConstraints)}}function e$(e,t,n){let r=e.variables.filter(i=>i.name===t);return n?r.filter(n):r}function ue(e,t,n){let r=[];for(let i=0;i<e.frames.length;i++){let o=e.frames[i],a=e$(o,t,n);r.push(...a)}return n?r.filter(n):r}function hr(e,t){let n=[];for(let r=0;r<e.frames.length;r++){let o=e.frames[r].variables.filter(t);n.push(...o)}return n}function Ps(e,t){for(let n=e.frames.length-1;n>=0;n--)if(e.frames[n].variables.some(t))return n;return-1}function Ct(e,t={id:Mo(e.modulePath,"frame"),variables:[],isBeginBlockFrame:!1,whereClauseConstraints:new Map},n){let r=n?{...t,isBeginBlockFrame:!0}:t;return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:[...e.frames,r],modulePath:e.modulePath,inputString:e.inputString}}function nn(e,t=!1){let n=e.frames.length-1,r=e.frames[n];if(!t){let i=Oa(e),o=r.variables.filter(a=>!a.initializedAtToken);if(i.length>0)throw tn(i.map(a=>({token:a.token,errorMessage:`Variable "${a.name}" was not consumed. It is supposed to be consumed before going out of scope.
188
- Typeof "${a.name}": ${x(a.type)}`})));if(o.length>0)throw tn(o.map(a=>({token:a.token,errorMessage:`Variable "${a.name}" is undefined.`})))}return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:e.frames.slice(0,-1),modulePath:e.modulePath,inputString:e.inputString}}function It(e,t,n){let r=e.frames.map(i=>{let o=i.variables.map(a=>a.id===t.id?n:a);return{...i,variables:o}});return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:r,modulePath:e.modulePath,inputString:e.inputString}}function r_(e){var t,n;return{id:e.id,name:e.name,type:x(e.type),typeId:e.type.id,value:vt((t=e.value)==null?void 0:t[0]),isCompileTimeOnly:e.isCompileTimeOnly,isUndefined:!e.initializedAtToken,isOwningTheRcValue:!!e.isOwningTheRcValue,isOwningTheSameRcValueAs:(n=e.isOwningTheSameRcValueAs)==null?void 0:n.name,isReassignable:!!e.isReassignable,isConsumed:!!e.consumedAtToken}}function i_({env:e,context:t,methodName:n,type:r}){let i=[];if(!r.trait)return i;let o=r.trait.fields.find(a=>a.label===n&&te(a.type));if(o&&te(o.type)){let a=o.assignedValue;Ge(a)&&(a=oe(o.type,{variableName:o.label,env:e,context:t})),i.push({type:o.type,value:a})}for(let a of r.trait.fields)if(a.label===""&&a.assignedValue&&mn(a.assignedValue)){let s=a.assignedValue,l=s.type,u=l.fields.findIndex(c=>c.label===n&&te(c.type));if(u>=0){let c=l.fields[u];if(te(c.type)){let f=s.fields[u],p=c.type;$e(f)&&f.specializedType&&(p=f.specializedType),i.push({type:p,value:f})}}}if(i.length===0){let a=Di({concreteType:r,methodName:n,env:e});i.push(...a)}return i}function Uc({env:e,context:t,methodName:n,receiverType:r,isInfixOperatorCall:i}){var p;let o=[],a=r;for(;_t(a);)a=a.childType;function s(_,d){let g=_.fields.find(y=>y.label===n&&(te(y.type)||ht(y.type)));if(g){let y;if(te(g.type)){if(Ge(d))y=oe(g.type,{variableName:g.label,env:e,context:t});else if(mn(d)){let h=_.fields.findIndex(v=>v.label===g.label);y=d.fields[h]}o.push({type:g.type,value:y})}else if(Qe(g.type)){let h=g.assignedValue;At(h)&&l(h)}}if(!g)for(let y of _.fields)ht(y.type)&&y.assignedValue&&s(y.type,y.assignedValue)}function l(_){let d=_.type.fields.findIndex(g=>g.label==="Call");if(d>=0){let g=_.type.fields[d];if(g.assignedValue){let y=g.assignedValue;$r(y)?y.fields.forEach(h=>{o.push({type:h.type,value:h})}):o.push({type:y.type,value:y})}}}function u(_){return _.filter(g=>{if(te(g.type)){if(g.type.parameters.length===0)return!1;let h=g.type.parameters[0].type;if(!i&&_t(h)){let E=h.childType,$=r;if((dn(r)||On(r)||Sn(r))&&($=un({type:r,expectedType:void 0,expr:void 0,env:e})),ie({type:E,env:g.type.env},{type:$,env:e},!0))return g.needsPointerConversion=!0,!0}if(lt(h)||lt(h)&&!lt(r)||z(r)&&r.resolvedConcreteType&&!rt(r)&&!lt(h)&&ie({type:h,env:g.type.env},{type:r.resolvedConcreteType,env:e},!0))return!0;if(!lt(h)&&lt(r))return!1;if(dn(r)||On(r)||Sn(r)){let E=un({type:r,expectedType:void 0,expr:void 0,env:e});if(ie({type:h,env:g.type.env},{type:E,env:e},!0))return!0}if(ot(r)&&g.value===void 0){if(g.type.parameters.length>0&&g.type.SelfType){let $=g.type.parameters[0];if($){let C=$.type;if(!rn(C)&&!ot(C)&&!_t(C))return!1}}let E=g.type.return.type;if(Li(E,g.type.SelfType))return!1}return ie({type:h,env:g.type.env},{type:r,env:e},!0)}return!0})}function c(_,d,g=new Set){if(g.has(_.id))return;g.add(_.id);let y=_.fields.find(h=>h.label===d&&te(h.type));if(y&&te(y.type)){let h=y.assignedValue;Ge(h)&&(h=oe(y.type,{variableName:y.label,env:e,context:t})),o.push({type:y.type,value:h});return}for(let h of _.fields)ht(h.type)&&h.assignedValue&&s(h.type,h.assignedValue)}if(r!==a&&r.trait){let _=r.trait.fields.find(d=>d.label===n&&te(d.type));if(_&&te(_.type)){let d=_.assignedValue;Ge(d)&&(d=oe(_.type,{variableName:_.label,env:e,context:t})),o.push({type:_.type,value:d})}else c(r.trait,n);for(let d of r.trait.fields)if(d.label===""&&d.assignedValue&&mn(d.assignedValue)){let g=d.assignedValue,y=g.type,h=y.fields.findIndex(v=>v.label===n&&te(v.type));if(h>=0){let v=y.fields[h];if(te(v.type)){let E=g.fields[h],$=v.type;$e(E)&&E.specializedType&&($=E.specializedType),o.push({type:$,value:E})}}}}if(o.length===0&&r!==a){let _=Di({concreteType:r,methodName:n,env:e});o.push(..._)}let f=z(a)&&a.resolvedConcreteType&&!rt(a);if(a.trait&&!ot(a)&&!f){let _=a.trait.fields.find(d=>d.label===n&&(te(d.type)||Qe(d.type)));if(_&&te(_.type)){let d=_.assignedValue;Ge(d)&&(d=oe(_.type,{variableName:_.label,env:e,context:t})),o.push({type:_.type,value:d})}else if(_&&Qe(_.type)){let d=_.assignedValue;At(d)&&l(d)}else c(a.trait,n);for(let d of a.trait.fields)if(d.label===""&&d.assignedValue&&mn(d.assignedValue)){let g=d.assignedValue,y=g.type,h=y.fields.findIndex(v=>v.label===n&&te(v.type));if(h>=0){let v=y.fields[h];if(te(v.type)){let E=g.fields[h],$=v.type;$e(E)&&E.specializedType&&($=E.specializedType),o.push({type:$,value:E})}}}if(o.length===0){let d=Di({concreteType:a,methodName:n,env:e});o.push(...d)}}if(dn(a)||On(a)||Sn(a)){let _=un({type:a,expectedType:void 0,expr:void 0,env:e});if(_.trait){let d=_.trait.fields.find(g=>g.label===n&&te(g.type));if(d&&te(d.type)){let g=d.assignedValue;Ge(g)&&(g=oe(d.type,{variableName:d.label,env:e,context:t})),o.push({type:d.type,value:g})}else c(_.trait,n);for(let g of _.trait.fields)if(g.label===""&&g.assignedValue&&mn(g.assignedValue)){let y=g.assignedValue,h=y.type,v=h.fields.findIndex(E=>E.label===n&&te(E.type));if(v>=0){let E=h.fields[v];if(te(E.type)){let $=y.fields[v],C=E.type;$e($)&&$.specializedType&&(C=$.specializedType),o.push({type:C,value:$})}}}if(o.length===0){let g=Di({concreteType:_,methodName:n,env:e});o.push(...g)}}}if(z(a)){if((p=a.resolvedConcreteType)!=null&&p.trait&&!rt(a)){let _=a.resolvedConcreteType,d=_.trait,g=d==null?void 0:d.fields.find(y=>y.label===n&&te(y.type));if(g&&te(g.type)){let y=g.assignedValue||oe(g.type,{variableName:g.label,env:e,context:t});o.push({type:g.type,value:y})}if(o.length===0){for(let y of(d==null?void 0:d.fields)??[])if(y.label===""&&y.assignedValue&&mn(y.assignedValue)){let h=y.assignedValue,v=h.type,E=v.fields.findIndex($=>$.label===n&&te($.type));if(E>=0){let $=v.fields[E];if(te($.type)){let C=h.fields[E],w=$.type;$e(C)&&C.specializedType&&(w=C.specializedType),o.push({type:w,value:C});break}}}}if(o.length===0){let y=Di({concreteType:_,methodName:n,env:e});o.push(...y)}}if(!(o.length>0)){let _=[],d=new Set;for(let y of a.requiredTraits??[])d.has(y.traitType.id)||(d.add(y.traitType.id),_.push(y.traitType));let g=ci(e,a);if(g)for(let y of g.requiredTraits)d.has(y.id)||(d.add(y.id),_.push(y));if(z(a))for(let y=e.frames.length-1;y>=0;y--){let h=e.frames[y];for(let v of h.whereClauseConstraints.values())if(ie({type:v.someType,env:e},{type:a,env:e},!1))for(let E of v.requiredTraits)d.has(E.id)||(d.add(E.id),_.push(E))}for(let y of _){let h=y.fields.find(v=>v.label===n&&te(v.type));if(h&&te(h.type)){let v={...h.type,SelfType:a},E=!1;if(v.parameters.length>0&&_t(v.parameters[0].type)){let C=v.parameters[0].type.childType;(z(C)&&C.name==="Self"||ie({type:C,env:v.env},{type:r,env:e},!0))&&(E=!0)}let $=oe(v,{variableName:h.label,env:e,context:t});o.push({type:v,value:$,needsPointerConversion:E})}}if(o.length===0){for(let y of a.trait.fields)if(y.label===""&&y.assignedValue&&Y(y.assignedValue)&&ht(y.assignedValue.value)){let v=y.assignedValue.value.fields.find(E=>E.label===n&&te(E.type));if(v&&te(v.type)){let E=oe(v.type,{variableName:v.label,env:e,context:t});o.push({type:v.type,value:E})}}}}}if(ot(a)){let _=a.trait.fields.find(g=>g.label===n&&(te(g.type)||ht(g.type)));if(_&&te(_.type)){let g=_.assignedValue||oe(_.type,{variableName:_.label,env:e,context:t});o.push({type:_.type,value:g})}let d=a.requiredTraits;for(let{traitType:g}of d){let y=g.fields.find(h=>h.label===n&&(te(h.type)||ht(h.type)));y&&te(y.type)&&y.type.parameters.length>0&&(lt(y.type.parameters[0].type)||lt(r)||ie({type:y.type.parameters[0].type,env:y.type.env},{type:r,env:e},!0))&&o.push({type:y.type,value:void 0})}}return o.length>0,u(o)}function o_(e){let t=e.frames.map(n=>({...n,variables:n.variables.filter(r=>!r.isImplicit)}));return{...e,frames:t}}function Eu(e){let t=e.frames.map((n,r)=>{if(r===0)return n;let i=n.variables.filter(o=>!(!o.isCompileTimeOnly||o.isImplicit));return{...n,variables:i}});return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:t,modulePath:e.modulePath,inputString:e.inputString}}function Oa(e){return e.frames.length===0?[]:e.frames[e.frames.length-1].variables.filter(r=>{if(r.consumedAtToken||!r.isOwningTheRcValue||!ut(r.type))return!1;let i=r.type;return!(z(i)&&!i.resolvedConcreteType&&i.requiredTraits.length===0)}).reverse()}function t$(e){var t;for(let n=e.frames.length-1;n>=0;n--)if((t=e.frames[n])!=null&&t.isBeginBlockFrame)return n;return-1}var t_,ZE,ft=j(()=>{xe();Gt();Rs();Zi();Qt();Ae();Je();yn();ge();t_=null;ZE="__yo_self"});function Us(e){if(e&&e.tag==="FnCall"&&T(e,":=")){let t=e.args[0];if(t&&t.tag==="Atom"&&t.token.type==="identifier"&&t.$){let n=t.token.value,r=ue(t.$.env,n);if(r.length>0)return r[r.length-1].id}}}function $u(e,t){var a;let n=[],r=new Map,i=new Map,o=new Map;if(Mi(e,n,r,i,o,t),(a=e.$)!=null&&a.deferredDropExpressions)for(let s of e.$.deferredDropExpressions)Mi(s,n,r,i,o,t);return n.length===0&&r.clear(),{suspensionPoints:n,capturedVariables:Array.from(r.values()),hasSuspensions:n.length>0,variableIdRemapping:o}}function Mi(e,t,n,r,i,o,a){var s,l;switch(e.tag){case"Atom":if(e.$&&e.token.type==="identifier"){let u=e.token.value,c=e.$.type,f=ue(e.$.env,u);if(f.length>0){let p=f[f.length-1];if(p&&!n.has(p.id)&&!p.isCompileTimeOnly){let _=`${p.name}:${p.frameLevel}`,d=r.get(_);if(d&&d!==p.id)i.set(p.id,d);else if(p.isOwningTheSameRcValueAs){let g=p.isOwningTheSameRcValueAs;if(!n.has(g.id)){let y={id:g.id,name:g.name,type:g.type,isOwningTheSameRcValueAs:void 0};n.set(g.id,y);let h=`${g.name}:${g.frameLevel}`;r.has(h)||r.set(h,g.id)}}else n.set(p.id,{id:p.id,name:u,type:c,isOwningTheSameRcValueAs:void 0}),r.has(_)||r.set(_,p.id)}}}break;case"FnCall":{if(T(e,D.while)){let u=t.length;Mi(e.func,t,n,r,i,o,e);for(let f of e.args)Mi(f,t,n,r,i,o,e);let c=t.length;if(c>u)for(let f=u;f<c;f++)t[f].isInsideWhile=!0,t[f].whileNestingDepth=(t[f].whileNestingDepth??0)+1,t[f].enclosingWhileExpr||(t[f].enclosingWhileExpr=e);break}if(T(e,D.cond)){a_(e,t,n,r,i,o);break}if(T(e,D.match)){a_(e,t,n,r,i,o);break}if(o.detect(e,a,t),o.shouldSkipBody(e)){if((s=e.$)!=null&&s.deferredDupExpressions)for(let u of e.$.deferredDupExpressions)Mi(u,t,n,r,i,o,e);break}Mi(e.func,t,n,r,i,o,e);for(let u of e.args)Mi(u,t,n,r,i,o,e);if((l=e.$)!=null&&l.deferredDropExpressions)for(let u of e.$.deferredDropExpressions)Mi(u,t,n,r,i,o,e);break}}}function a_(e,t,n,r,i,o){if(e.tag!=="FnCall")return;let a=t.length;Mi(e.func,t,n,r,i,o,e);let s=new Map(r),l=[];for(let c of e.args){let f=t.length;Mi(c,t,n,r,i,o,e),l.push(t.slice(f))}r.clear();for(let[c,f]of s)r.set(c,f);let u=Math.max(...l.map(c=>c.length),0);if(u>0){t.splice(a);let c=a;for(let f=0;f<u;f++){let p;for(let _ of l)if(f<_.length){p=_[f];break}p&&(p.index=t.length,p.isInsideCond=!0,f===0&&(p.needsOwnCondBranchField=!0),f>0&&(p.condBranchSourceIndex=c),t.push(p))}}}var zc=j(()=>{ft();ce();pn()});function s_(e){let n=$u(e,{detect(i,o,a){var s;if(i.tag==="FnCall"&&Nr(i)){let l=i.args[0];if(!l)return;let u=(s=l.$)==null?void 0:s.type;if(u&&rt(u)){let c=Un(u);if(!c)return;let f=c.isFuture.outputType,p;if(l.tag==="Atom"&&l.token.type==="identifier"&&l.$){let d=l.token.value,g=ue(l.$.env,d);if(g.length>0){let y=g[g.length-1];y.isOwningTheSameRcValueAs?p=y.isOwningTheSameRcValueAs.id:p=y.id}}let _=Us(o);a.push({index:a.length,expr:i,resultType:f,futureType:c,targetVariableId:_,futureVariableId:p})}}},shouldSkipBody(i){return qn(i)}}),r=n.capturedVariables.map(i=>({id:i.id,name:i.name,type:i.type,kind:"local",isOwningTheSameRcValueAs:void 0}));return{awaitPoints:n.suspensionPoints,capturedVariables:r,hasAwaits:n.hasSuspensions,variableIdRemapping:n.variableIdRemapping}}function qn(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_async"}function Nr(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_await"}function l_(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_state"}function u_(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_spawn"}function c_(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="join_handle_await"}var Jr=j(()=>{ft();ce();pn();zc();Gt()});function Ji(e){let{emitter:t,indent:n,resultCode:r,debugLabel:i}=e;r!==void 0&&t.emitLine(`${n}sm->result = ${r};`),i&&t.emitLine(`${n}ASYNC_DEBUG("${i}: Setting state to COMPLETED\\n");`),t.emitLine(`${n}sm->state = -1; // -1 = completed`),t.emitLine(""),t.emitLine(`${n}void (*continuation_fn)(void*) = (void (*)(void*))sm->continuation_fn;`),t.emitLine(`${n}void* continuation_sm = sm->continuation_sm;`),t.emitLine(""),t.emitLine(`${n}if (continuation_fn != NULL) {`),i&&t.emitLine(`${n} ASYNC_DEBUG("${i}: Spawning continuation: resume_fn=%p, sm=%p\\n", (void*)continuation_fn, continuation_sm);`),t.emitLine(""),t.emitLine(`${n} sm->continuation_fn = NULL;`),t.emitLine(`${n} sm->continuation_sm = NULL;`),t.emitLine(""),t.emitLine(`${n} yo_async_spawn_task(continuation_fn, continuation_sm);`),t.emitLine(`${n}}`),t.emitLine(""),t.emitLine(`${n}__yo_decr_rc((void*)sm);`),t.emitLine(""),t.emitLine(`${n}return;`)}function ei(e){let{emitter:t,indent:n,resultCode:r,debugLabel:i}=e;r!==void 0&&t.emitLine(`${n}sm->result = ${r};`),i&&t.emitLine(`${n}ASYNC_DEBUG("${i}: Setting state to ESCAPED (effect handler escape)\\n");`),t.emitLine(`${n}sm->state = -2; // -2 = escaped`),t.emitLine(""),t.emitLine(`${n}void (*continuation_fn)(void*) = (void (*)(void*))sm->continuation_fn;`),t.emitLine(`${n}void* continuation_sm = sm->continuation_sm;`),t.emitLine(""),t.emitLine(`${n}if (continuation_fn != NULL) {`),i&&t.emitLine(`${n} ASYNC_DEBUG("${i}: Spawning continuation for escaped future: resume_fn=%p, sm=%p\\n", (void*)continuation_fn, continuation_sm);`),t.emitLine(""),t.emitLine(`${n} sm->continuation_fn = NULL;`),t.emitLine(`${n} sm->continuation_sm = NULL;`),t.emitLine(""),t.emitLine(`${n} yo_async_spawn_task(continuation_fn, continuation_sm);`),t.emitLine(`${n}}`),t.emitLine(""),t.emitLine(`${n}__yo_decr_rc((void*)sm);`),t.emitLine(""),t.emitLine(`${n}return;`)}var ea=j(()=>{});var ta,f_,zs=j(()=>{ce();Mr();ta=[...F.__yo_op_add,...F.__yo_op_sub,...F.__yo_op_mul,...F.__yo_op_div,...F.__yo_op_mod,...F.__yo_op_neg,...F.__yo_op_eq,...F.__yo_op_neq,...F.__yo_op_lt,...F.__yo_op_lte,...F.__yo_op_gt,...F.__yo_op_gte,...F.__yo_op_not,...F.__yo_op_bit_and,...F.__yo_op_bit_or,...F.__yo_op_bit_xor,...F.__yo_op_bit_complement,...F.__yo_op_bit_left_shift,...F.__yo_op_bit_right_shift,...F.__yo_ptr_add,...F.__yo_ptr_sub,...F.__yo_ptr_diff,...F.__yo_ptr_eq,...F.__yo_ptr_neq,...F.__yo_ptr_lt,...F.__yo_ptr_lte,...F.__yo_ptr_gt,...F.__yo_ptr_gte,...F.__yo_slice_len,...F.__yo_slice_new,...F.__yo_as,...F.__yo_getrandom,...F.__yo_arc4random_buf,...F.__yo_bcrypt_gen_random,...F.__yo_maybe_uninit_new,...F.__yo_maybe_uninit_as_ptr,...F.__yo_maybe_uninit_assume_init,...F.__yo_noop,...F.__yo_return_self,...F.__yo_ms_sleep],f_=new Set(["bool","usize","isize","u8","i8","u16","i16","u32","i32","u64","i64","f32","f64","char","short","ushort","int","uint","long","ulong","longlong","ulonglong","longdouble"])});function ve(e,t=!1){let n=new Set(["auto","break","case","char","const","continue","default","do","double","else","enum","extern","float","for","goto","if","inline","int","long","register","restrict","return","short","signed","sizeof","static","struct","switch","typedef","union","unsigned","void","volatile","while","_Alignas","_Alignof","_Atomic","_Bool","_Complex","_Generic","_Imaginary","_Noreturn","_Static_assert","_Thread_local","errno","stdin","stdout","stderr","NULL","true","false"]),r=e.replace(/[^a-zA-Z0-9_]/g,i=>`_u${i.charCodeAt(0)}_`);return!t&&n.has(r)&&(r="__yo_c_reserved_"+r),r}function q(e,t){var n,r,i,o,a,s,l;if(!e)return"int32_t";if(e.isExtern&&e.externName)return e.externName;switch(e.tag){case"unit":return"void";case"void":return"void";case"bool":return"bool";case"usize":return"size_t";case"isize":return"intptr_t";case"u8":return"uint8_t";case"i8":return"int8_t";case"u16":return"uint16_t";case"i16":return"int16_t";case"u32":return"uint32_t";case"i32":return"int32_t";case"u64":return"uint64_t";case"i64":return"int64_t";case"f32":return"float";case"f64":return"double";case"comptime_int":return"int32_t";case"comptime_float":return"double";case"comptime_string":return"uint8_t*";case"char":return"char";case"short":return"short";case"ushort":return"unsigned short";case"int":return"int";case"uint":return"unsigned int";case"long":return"long";case"ulong":return"unsigned long";case"longlong":return"long long";case"ulonglong":return"unsigned long long";case"longdouble":return"long double";case"Tuple":case"Struct":case"Union":case"Enum":{if(e.tag==="Enum"){let f=Hn(e);if(f)return q(f,t)}let u;switch(e.tag){case"Tuple":u="tuple";break;case"Struct":u="struct";break;case"Union":u="union";break;case"Enum":u="enum";break;default:throw new Error("Unreachable")}let c=(n=t.types[e.id])==null?void 0:n.cName;if(!c)throw new Error(`No C type name found for ${u} ${x(e)}`);return(e.tag==="Struct"||e.tag==="Enum")&&ze(e)&&e.isReferenceSemantics?`${c}*`:c}case"Function":return"void*";case"Dyn":{let u=(r=t.types[e.id])==null?void 0:r.cName;if(!u)throw new Error(`No C type name found for dynamic dispatch type ${x(e)}`);return u}case"Array":{let u=e,c=u.childType,f=u.length;if(wt(f)){let p=q(c,t),_=`Array_${ve(p)}_${f.value}`;return t.arrayStructTypes.has(_)||t.arrayStructTypes.set(_,{childType:p,length:typeof f.value=="bigint"?Number(f.value):f.value}),_}break}case"Slice":{let u=e,f=`Slice_${ve(q(u.childType,t))}`;return t.sliceStructTypes.has(f)||t.sliceStructTypes.set(f,{childType:q(u.childType,t)}),f}case"SomeType":{let u=e;if(rt(u)){if((i=u.resolvedConcreteType)!=null&&i.isExtern)return`${q(u.resolvedConcreteType,t)}*`;let c=(o=t.types[u.id])==null?void 0:o.cName;if(c)return`${c}*`;if(u.resolvedConcreteType&&z(u.resolvedConcreteType)&&rt(u.resolvedConcreteType)){let p=u.resolvedConcreteType,_=(a=t.types[p.id])==null?void 0:a.cName;if(_)return`${_}*`}if(u.resolvedConcreteType&&ze(u.resolvedConcreteType)){let p=u.resolvedConcreteType.id;for(let[_,d]of Object.entries(t.types))if(z(d.type)&&rt(d.type)&&d.type.resolvedConcreteType&&ze(d.type.resolvedConcreteType)&&d.type.resolvedConcreteType.id===p)return`${d.cName}*`}let f=Un(u);if(f){let p=(s=t.types[f.id])==null?void 0:s.cName;if(p)return`${p}*`}throw new Error(`Impl(Future) type has no registered concrete type. SomeType ID: ${u.id}, FutureModule: ${(f==null?void 0:f.id)??"none"}. Ensure async blocks are properly analyzed and their state machine types are registered.
187
+ Consider restructuring the type to avoid mixing incompatible field types.`})}var Oc,Gt=j(()=>{ft();xe();Qt();ui();Ae();Mr();Je();ge();Zi();Oc=new Set});function ur(e,t=!0,n){switch(e.tag){case"ComptimeInt":case"ComptimeFloat":case"U8":case"I8":case"U16":case"I16":case"U32":case"I32":case"U64":case"I64":case"F32":case"F64":case"Usize":case"Isize":return e;case"Bool":return e;case"Unit":return e;case"ComptimeString":return e;case"Type":return e;case"Function":return e;case"Expr":return e;case"Unknown":return e;case"Ptr":{if(t)return e;let r=e;if(n){let a=n.get(r.targetValue);if(a)return{...r,targetValue:a,targetIndex:r.targetIndex}}let o=[ur(r.targetValue[0],t,n)];return n&&n.set(r.targetValue,o),{...r,targetValue:o,targetIndex:r.targetIndex}}case"Tuple":{let r=e;return{...r,fields:r.fields.map(i=>ur(i,t,n))}}case"Struct":{let r=e;return{...r,fields:r.fields.map(i=>ur(i,t,n))}}case"Enum":{let r=e;return{...r,fields:r.fields.map(i=>ur(i,t,n))}}case"Array":{let r=e;return{...r,elements:r.elements.map(i=>ur(i,t,n))}}case"Slice":{if(t)return e;let r=e;if(n){let a=n.get(r.sourceArray);if(a)return{...r,sourceArray:a}}let o=[ur(r.sourceArray[0],t,n)];return n&&n.set(r.sourceArray,o),{...r,sourceArray:o}}case"ComptimeList":{let r=e;return{...r,elements:r.elements.map(i=>ur(i,t,n))}}case"Module":{let r=e;return{...r,fields:r.fields.map(i=>i?ur(i,t,n):void 0)}}case"Trait":{let r=e;return{...r,fields:r.fields.map(i=>i?ur(i,t,n):void 0)}}default:return e}}var Rs=j(()=>{_r()});function Rc({modulePath:e,inputString:t}){return{functionDeclarationFrameLevel:-1,frames:[],modulePath:e,inputString:t}}function Zt(){let e=Rc({modulePath:"",inputString:""});return Ct(e)}function Pc(e){let t=new Map,n=[...e.frames.flatMap(o=>o.variables)];for(let o of n)if(o.value&&!t.has(o.value)){let a=ur(o.value[0],!1,t);t.has(o.value)||t.set(o.value,[a])}let r=o=>{if(!o.value)return{...o};let a=t.get(o.value);if(a)return{...o,value:a};let s=ur(o.value[0],!1,t);return{...o,value:[s]}},i=o=>({...o,variables:o.variables.map(r),whereClauseConstraints:QE(o.whereClauseConstraints)});return{...e,frames:e.frames.map(i)}}function QE(e){let t=new Map;for(let[n,r]of e)t.set(n,{someType:r.someType,requiredTraits:[...r.requiredTraits],negativeTraits:[...r.negativeTraits]});return t}function Ei({env:e,someType:t,traitType:n,isNegated:r}){let i=e.frames.length-1,o=e.frames[i];if(!o)return e;let a=t.id,s=o.whereClauseConstraints.get(a);s||(s={someType:t,requiredTraits:[],negativeTraits:[]},o.whereClauseConstraints.set(a,s));let l=r?s.negativeTraits:s.requiredTraits;return l.some(u=>u.id===n.id)||l.push(n),e}function ci(e,t){var l;let n=[],r=[],i=new Set,o=new Set,a=!1,s=new Set;for(let u of e.frames)for(let c of u.variables){let f=(l=c.value)==null?void 0:l[0];Y(f)&&z(f.value)&&f.value.id===t.id&&s.add(c.name)}for(let u of e.frames)for(let c of u.whereClauseConstraints.values())if(!(c.someType.id!==t.id&&!s.has(c.someType.name))){a=!0;for(let f of c.requiredTraits)i.has(f.id)||(i.add(f.id),n.push(f));for(let f of c.negativeTraits)o.has(f.id)||(o.add(f.id),r.push(f))}if(a)return{requiredTraits:n,negativeTraits:r}}function n_(e){t_=e}function $o(){t_=null}function Be({env:e,variable:t,deltaFrame:n,variableId:r,addToBeginBlockFrame:i,allowVariableShadowing:o}){let a=e.frames.length-1+(n??0);if(i){let _=t$(e);_>=0&&(a=_)}if(t.name!==ZE){let _=ue(e,t.name);if(_.length>0&&!o){let d=_[_.length-1];throw tn([{token:t.token,errorMessage:`Failed to define variable "${t.name}":`},{token:d.token,errorMessage:`Variable "${t.name}" is already defined here (variable shadowing is not allowed):`}])}}let s=e.frames[a];if(!s)throw console.trace(`Frame at level ${a} does not exist in the environment.`),new Error(`Frame at level ${a} does not exist in the environment.`);let l=en(e.modulePath,t.name)?t.name:r??Mo(e.modulePath,t.name),u={...t,frameLevel:a,id:l},c=JE({frame:s,variable:u}),f=e.frames.slice();return f[a]=c,{env:{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:f,modulePath:e.modulePath,inputString:e.inputString},variable:u}}function JE({frame:e,variable:t}){if(t.name==="_")return e;if(e.variables.some(r=>r.name===t.name))throw tn([{token:t.token,errorMessage:`Failed to define variable "${t.name}":`},{token:e.variables.find(r=>r.name===t.name).token,errorMessage:`Variable "${t.name}" is already defined here in the same scope:`}]);let n=e.variables.findIndex(r=>r.name===t.name&&!r.initializedAtToken);if(n>-1){let r=e.variables.slice();return r[n]=t,{id:e.id,variables:r,isBeginBlockFrame:e.isBeginBlockFrame,whereClauseConstraints:new Map(e.whereClauseConstraints)}}return{id:e.id,variables:[...e.variables,t],isBeginBlockFrame:e.isBeginBlockFrame,whereClauseConstraints:new Map(e.whereClauseConstraints)}}function e$(e,t,n){let r=e.variables.filter(i=>i.name===t);return n?r.filter(n):r}function ue(e,t,n){let r=[];for(let i=0;i<e.frames.length;i++){let o=e.frames[i],a=e$(o,t,n);r.push(...a)}return n?r.filter(n):r}function hr(e,t){let n=[];for(let r=0;r<e.frames.length;r++){let o=e.frames[r].variables.filter(t);n.push(...o)}return n}function Ps(e,t){for(let n=e.frames.length-1;n>=0;n--)if(e.frames[n].variables.some(t))return n;return-1}function Ct(e,t={id:Mo(e.modulePath,"frame"),variables:[],isBeginBlockFrame:!1,whereClauseConstraints:new Map},n){let r=n?{...t,isBeginBlockFrame:!0}:t;return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:[...e.frames,r],modulePath:e.modulePath,inputString:e.inputString}}function nn(e,t=!1){let n=e.frames.length-1,r=e.frames[n];if(!t){let i=Oa(e),o=r.variables.filter(a=>!a.initializedAtToken);if(i.length>0)throw tn(i.map(a=>({token:a.token,errorMessage:`Variable "${a.name}" was not consumed. It is supposed to be consumed before going out of scope.
188
+ Typeof "${a.name}": ${x(a.type)}`})));if(o.length>0)throw tn(o.map(a=>({token:a.token,errorMessage:`Variable "${a.name}" is undefined.`})))}return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:e.frames.slice(0,-1),modulePath:e.modulePath,inputString:e.inputString}}function It(e,t,n){let r=e.frames.map(i=>{let o=i.variables.map(a=>a.id===t.id?n:a);return{...i,variables:o}});return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:r,modulePath:e.modulePath,inputString:e.inputString}}function r_(e){var t,n;return{id:e.id,name:e.name,type:x(e.type),typeId:e.type.id,value:vt((t=e.value)==null?void 0:t[0]),isCompileTimeOnly:e.isCompileTimeOnly,isUndefined:!e.initializedAtToken,isOwningTheRcValue:!!e.isOwningTheRcValue,isOwningTheSameRcValueAs:(n=e.isOwningTheSameRcValueAs)==null?void 0:n.name,isReassignable:!!e.isReassignable,isConsumed:!!e.consumedAtToken}}function i_({env:e,context:t,methodName:n,type:r}){let i=[];if(!r.trait)return i;let o=r.trait.fields.find(a=>a.label===n&&te(a.type));if(o&&te(o.type)){let a=o.assignedValue;Ge(a)&&(a=oe(o.type,{variableName:o.label,env:e,context:t})),i.push({type:o.type,value:a})}for(let a of r.trait.fields)if(a.label===""&&a.assignedValue&&mn(a.assignedValue)){let s=a.assignedValue,l=s.type,u=l.fields.findIndex(c=>c.label===n&&te(c.type));if(u>=0){let c=l.fields[u];if(te(c.type)){let f=s.fields[u],p=c.type;$e(f)&&f.specializedType&&(p=f.specializedType),i.push({type:p,value:f})}}}if(i.length===0){let a=Mi({concreteType:r,methodName:n,env:e});i.push(...a)}return i}function Uc({env:e,context:t,methodName:n,receiverType:r,isInfixOperatorCall:i}){var p;let o=[],a=r;for(;_t(a);)a=a.childType;function s(_,d){let g=_.fields.find(y=>y.label===n&&(te(y.type)||ht(y.type)));if(g){let y;if(te(g.type)){if(Ge(d))y=oe(g.type,{variableName:g.label,env:e,context:t});else if(mn(d)){let h=_.fields.findIndex(v=>v.label===g.label);y=d.fields[h]}o.push({type:g.type,value:y})}else if(Qe(g.type)){let h=g.assignedValue;At(h)&&l(h)}}if(!g)for(let y of _.fields)ht(y.type)&&y.assignedValue&&s(y.type,y.assignedValue)}function l(_){let d=_.type.fields.findIndex(g=>g.label==="Call");if(d>=0){let g=_.type.fields[d];if(g.assignedValue){let y=g.assignedValue;$r(y)?y.fields.forEach(h=>{o.push({type:h.type,value:h})}):o.push({type:y.type,value:y})}}}function u(_){return _.filter(g=>{if(te(g.type)){if(g.type.parameters.length===0)return!1;let h=g.type.parameters[0].type;if(!i&&_t(h)){let E=h.childType,$=r;if((dn(r)||On(r)||Sn(r))&&($=un({type:r,expectedType:void 0,expr:void 0,env:e})),ie({type:E,env:g.type.env},{type:$,env:e},!0))return g.needsPointerConversion=!0,!0}if(lt(h)||lt(h)&&!lt(r)||z(r)&&r.resolvedConcreteType&&!rt(r)&&!lt(h)&&ie({type:h,env:g.type.env},{type:r.resolvedConcreteType,env:e},!0))return!0;if(!lt(h)&&lt(r))return!1;if(dn(r)||On(r)||Sn(r)){let E=un({type:r,expectedType:void 0,expr:void 0,env:e});if(ie({type:h,env:g.type.env},{type:E,env:e},!0))return!0}if(ot(r)&&g.value===void 0){if(g.type.parameters.length>0&&g.type.SelfType){let $=g.type.parameters[0];if($){let C=$.type;if(!rn(C)&&!ot(C)&&!_t(C))return!1}}let E=g.type.return.type;if(Ai(E,g.type.SelfType))return!1}return ie({type:h,env:g.type.env},{type:r,env:e},!0)}return!0})}function c(_,d,g=new Set){if(g.has(_.id))return;g.add(_.id);let y=_.fields.find(h=>h.label===d&&te(h.type));if(y&&te(y.type)){let h=y.assignedValue;Ge(h)&&(h=oe(y.type,{variableName:y.label,env:e,context:t})),o.push({type:y.type,value:h});return}for(let h of _.fields)ht(h.type)&&h.assignedValue&&s(h.type,h.assignedValue)}if(r!==a&&r.trait){let _=r.trait.fields.find(d=>d.label===n&&te(d.type));if(_&&te(_.type)){let d=_.assignedValue;Ge(d)&&(d=oe(_.type,{variableName:_.label,env:e,context:t})),o.push({type:_.type,value:d})}else c(r.trait,n);for(let d of r.trait.fields)if(d.label===""&&d.assignedValue&&mn(d.assignedValue)){let g=d.assignedValue,y=g.type,h=y.fields.findIndex(v=>v.label===n&&te(v.type));if(h>=0){let v=y.fields[h];if(te(v.type)){let E=g.fields[h],$=v.type;$e(E)&&E.specializedType&&($=E.specializedType),o.push({type:$,value:E})}}}}if(o.length===0&&r!==a){let _=Mi({concreteType:r,methodName:n,env:e});o.push(..._)}let f=z(a)&&a.resolvedConcreteType&&!rt(a);if(a.trait&&!ot(a)&&!f){let _=a.trait.fields.find(d=>d.label===n&&(te(d.type)||Qe(d.type)));if(_&&te(_.type)){let d=_.assignedValue;Ge(d)&&(d=oe(_.type,{variableName:_.label,env:e,context:t})),o.push({type:_.type,value:d})}else if(_&&Qe(_.type)){let d=_.assignedValue;At(d)&&l(d)}else c(a.trait,n);for(let d of a.trait.fields)if(d.label===""&&d.assignedValue&&mn(d.assignedValue)){let g=d.assignedValue,y=g.type,h=y.fields.findIndex(v=>v.label===n&&te(v.type));if(h>=0){let v=y.fields[h];if(te(v.type)){let E=g.fields[h],$=v.type;$e(E)&&E.specializedType&&($=E.specializedType),o.push({type:$,value:E})}}}if(o.length===0){let d=Mi({concreteType:a,methodName:n,env:e});o.push(...d)}}if(dn(a)||On(a)||Sn(a)){let _=un({type:a,expectedType:void 0,expr:void 0,env:e});if(_.trait){let d=_.trait.fields.find(g=>g.label===n&&te(g.type));if(d&&te(d.type)){let g=d.assignedValue;Ge(g)&&(g=oe(d.type,{variableName:d.label,env:e,context:t})),o.push({type:d.type,value:g})}else c(_.trait,n);for(let g of _.trait.fields)if(g.label===""&&g.assignedValue&&mn(g.assignedValue)){let y=g.assignedValue,h=y.type,v=h.fields.findIndex(E=>E.label===n&&te(E.type));if(v>=0){let E=h.fields[v];if(te(E.type)){let $=y.fields[v],C=E.type;$e($)&&$.specializedType&&(C=$.specializedType),o.push({type:C,value:$})}}}if(o.length===0){let g=Mi({concreteType:_,methodName:n,env:e});o.push(...g)}}}if(z(a)){if((p=a.resolvedConcreteType)!=null&&p.trait&&!rt(a)){let _=a.resolvedConcreteType,d=_.trait,g=d==null?void 0:d.fields.find(y=>y.label===n&&te(y.type));if(g&&te(g.type)){let y=g.assignedValue||oe(g.type,{variableName:g.label,env:e,context:t});o.push({type:g.type,value:y})}if(o.length===0){for(let y of(d==null?void 0:d.fields)??[])if(y.label===""&&y.assignedValue&&mn(y.assignedValue)){let h=y.assignedValue,v=h.type,E=v.fields.findIndex($=>$.label===n&&te($.type));if(E>=0){let $=v.fields[E];if(te($.type)){let C=h.fields[E],w=$.type;$e(C)&&C.specializedType&&(w=C.specializedType),o.push({type:w,value:C});break}}}}if(o.length===0){let y=Mi({concreteType:_,methodName:n,env:e});o.push(...y)}}if(!(o.length>0)){let _=[],d=new Set;for(let y of a.requiredTraits??[])d.has(y.traitType.id)||(d.add(y.traitType.id),_.push(y.traitType));let g=ci(e,a);if(g)for(let y of g.requiredTraits)d.has(y.id)||(d.add(y.id),_.push(y));if(z(a))for(let y=e.frames.length-1;y>=0;y--){let h=e.frames[y];for(let v of h.whereClauseConstraints.values())if(ie({type:v.someType,env:e},{type:a,env:e},!1))for(let E of v.requiredTraits)d.has(E.id)||(d.add(E.id),_.push(E))}for(let y of _){let h=y.fields.find(v=>v.label===n&&te(v.type));if(h&&te(h.type)){let v={...h.type,SelfType:a},E=!1;if(v.parameters.length>0&&_t(v.parameters[0].type)){let C=v.parameters[0].type.childType;(z(C)&&C.name==="Self"||ie({type:C,env:v.env},{type:r,env:e},!0))&&(E=!0)}let $=oe(v,{variableName:h.label,env:e,context:t});o.push({type:v,value:$,needsPointerConversion:E})}}if(o.length===0){for(let y of a.trait.fields)if(y.label===""&&y.assignedValue&&Y(y.assignedValue)&&ht(y.assignedValue.value)){let v=y.assignedValue.value.fields.find(E=>E.label===n&&te(E.type));if(v&&te(v.type)){let E=oe(v.type,{variableName:v.label,env:e,context:t});o.push({type:v.type,value:E})}}}}}if(ot(a)){let _=a.trait.fields.find(g=>g.label===n&&(te(g.type)||ht(g.type)));if(_&&te(_.type)){let g=_.assignedValue||oe(_.type,{variableName:_.label,env:e,context:t});o.push({type:_.type,value:g})}let d=a.requiredTraits;for(let{traitType:g}of d){let y=g.fields.find(h=>h.label===n&&(te(h.type)||ht(h.type)));y&&te(y.type)&&y.type.parameters.length>0&&(lt(y.type.parameters[0].type)||lt(r)||ie({type:y.type.parameters[0].type,env:y.type.env},{type:r,env:e},!0))&&o.push({type:y.type,value:void 0})}}return o.length>0,u(o)}function o_(e){let t=e.frames.map(n=>({...n,variables:n.variables.filter(r=>!r.isImplicit)}));return{...e,frames:t}}function Eu(e){let t=e.frames.map((n,r)=>{if(r===0)return n;let i=n.variables.filter(o=>!(!o.isCompileTimeOnly||o.isImplicit));return{...n,variables:i}});return{functionDeclarationFrameLevel:e.functionDeclarationFrameLevel,frames:t,modulePath:e.modulePath,inputString:e.inputString}}function Oa(e){return e.frames.length===0?[]:e.frames[e.frames.length-1].variables.filter(r=>{if(r.consumedAtToken||!r.isOwningTheRcValue||!ut(r.type))return!1;let i=r.type;return!(z(i)&&!i.resolvedConcreteType&&i.requiredTraits.length===0)}).reverse()}function t$(e){var t;for(let n=e.frames.length-1;n>=0;n--)if((t=e.frames[n])!=null&&t.isBeginBlockFrame)return n;return-1}var t_,ZE,ft=j(()=>{xe();Gt();Rs();Zi();Qt();Ae();Je();yn();ge();t_=null;ZE="__yo_self"});function Us(e){if(e&&e.tag==="FnCall"&&T(e,":=")){let t=e.args[0];if(t&&t.tag==="Atom"&&t.token.type==="identifier"&&t.$){let n=t.token.value,r=ue(t.$.env,n);if(r.length>0)return r[r.length-1].id}}}function $u(e,t){var a;let n=[],r=new Map,i=new Map,o=new Map;if(Oi(e,n,r,i,o,t),(a=e.$)!=null&&a.deferredDropExpressions)for(let s of e.$.deferredDropExpressions)Oi(s,n,r,i,o,t);return n.length===0&&r.clear(),{suspensionPoints:n,capturedVariables:Array.from(r.values()),hasSuspensions:n.length>0,variableIdRemapping:o}}function Oi(e,t,n,r,i,o,a){var s,l;switch(e.tag){case"Atom":if(e.$&&e.token.type==="identifier"){let u=e.token.value,c=e.$.type,f=ue(e.$.env,u);if(f.length>0){let p=f[f.length-1];if(p&&!n.has(p.id)&&!p.isCompileTimeOnly){let _=`${p.name}:${p.frameLevel}`,d=r.get(_);if(d&&d!==p.id)i.set(p.id,d);else if(p.isOwningTheSameRcValueAs){let g=p.isOwningTheSameRcValueAs;if(!n.has(g.id)){let y={id:g.id,name:g.name,type:g.type,isOwningTheSameRcValueAs:void 0};n.set(g.id,y);let h=`${g.name}:${g.frameLevel}`;r.has(h)||r.set(h,g.id)}}else n.set(p.id,{id:p.id,name:u,type:c,isOwningTheSameRcValueAs:void 0}),r.has(_)||r.set(_,p.id)}}}break;case"FnCall":{if(T(e,D.while)){let u=t.length;Oi(e.func,t,n,r,i,o,e);for(let f of e.args)Oi(f,t,n,r,i,o,e);let c=t.length;if(c>u)for(let f=u;f<c;f++)t[f].isInsideWhile=!0,t[f].whileNestingDepth=(t[f].whileNestingDepth??0)+1,t[f].enclosingWhileExpr||(t[f].enclosingWhileExpr=e);break}if(T(e,D.cond)){a_(e,t,n,r,i,o);break}if(T(e,D.match)){a_(e,t,n,r,i,o);break}if(o.detect(e,a,t),o.shouldSkipBody(e)){if((s=e.$)!=null&&s.deferredDupExpressions)for(let u of e.$.deferredDupExpressions)Oi(u,t,n,r,i,o,e);break}Oi(e.func,t,n,r,i,o,e);for(let u of e.args)Oi(u,t,n,r,i,o,e);if((l=e.$)!=null&&l.deferredDropExpressions)for(let u of e.$.deferredDropExpressions)Oi(u,t,n,r,i,o,e);break}}}function a_(e,t,n,r,i,o){if(e.tag!=="FnCall")return;let a=t.length;Oi(e.func,t,n,r,i,o,e);let s=new Map(r),l=[];for(let c of e.args){let f=t.length;Oi(c,t,n,r,i,o,e),l.push(t.slice(f))}r.clear();for(let[c,f]of s)r.set(c,f);let u=Math.max(...l.map(c=>c.length),0);if(u>0){t.splice(a);let c=a;for(let f=0;f<u;f++){let p;for(let _ of l)if(f<_.length){p=_[f];break}p&&(p.index=t.length,p.isInsideCond=!0,f===0&&(p.needsOwnCondBranchField=!0),f>0&&(p.condBranchSourceIndex=c),t.push(p))}}}var zc=j(()=>{ft();ce();pn()});function s_(e){let n=$u(e,{detect(i,o,a){var s;if(i.tag==="FnCall"&&Nr(i)){let l=i.args[0];if(!l)return;let u=(s=l.$)==null?void 0:s.type;if(u&&rt(u)){let c=Un(u);if(!c)return;let f=c.isFuture.outputType,p;if(l.tag==="Atom"&&l.token.type==="identifier"&&l.$){let d=l.token.value,g=ue(l.$.env,d);if(g.length>0){let y=g[g.length-1];y.isOwningTheSameRcValueAs?p=y.isOwningTheSameRcValueAs.id:p=y.id}}let _=Us(o);a.push({index:a.length,expr:i,resultType:f,futureType:c,targetVariableId:_,futureVariableId:p})}}},shouldSkipBody(i){return qn(i)}}),r=n.capturedVariables.map(i=>({id:i.id,name:i.name,type:i.type,kind:"local",isOwningTheSameRcValueAs:void 0}));return{awaitPoints:n.suspensionPoints,capturedVariables:r,hasAwaits:n.hasSuspensions,variableIdRemapping:n.variableIdRemapping}}function qn(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_async"}function Nr(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_await"}function l_(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_state"}function u_(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="io_spawn"}function c_(e){var t,n;return e.tag!=="FnCall"?!1:((n=(t=e.func.$)==null?void 0:t.type)==null?void 0:n.ioBuiltin)==="join_handle_await"}var Jr=j(()=>{ft();ce();pn();zc();Gt()});function Ji(e){let{emitter:t,indent:n,resultCode:r,debugLabel:i}=e;r!==void 0&&t.emitLine(`${n}sm->result = ${r};`),i&&t.emitLine(`${n}ASYNC_DEBUG("${i}: Setting state to COMPLETED\\n");`),t.emitLine(`${n}sm->state = -1; // -1 = completed`),t.emitLine(""),t.emitLine(`${n}void (*continuation_fn)(void*) = (void (*)(void*))sm->continuation_fn;`),t.emitLine(`${n}void* continuation_sm = sm->continuation_sm;`),t.emitLine(""),t.emitLine(`${n}if (continuation_fn != NULL) {`),i&&t.emitLine(`${n} ASYNC_DEBUG("${i}: Spawning continuation: resume_fn=%p, sm=%p\\n", (void*)continuation_fn, continuation_sm);`),t.emitLine(""),t.emitLine(`${n} sm->continuation_fn = NULL;`),t.emitLine(`${n} sm->continuation_sm = NULL;`),t.emitLine(""),t.emitLine(`${n} yo_async_spawn_task(continuation_fn, continuation_sm);`),t.emitLine(`${n}}`),t.emitLine(""),t.emitLine(`${n}__yo_decr_rc((void*)sm);`),t.emitLine(""),t.emitLine(`${n}return;`)}function ei(e){let{emitter:t,indent:n,resultCode:r,debugLabel:i}=e;r!==void 0&&t.emitLine(`${n}sm->result = ${r};`),i&&t.emitLine(`${n}ASYNC_DEBUG("${i}: Setting state to ESCAPED (effect handler escape)\\n");`),t.emitLine(`${n}sm->state = -2; // -2 = escaped`),t.emitLine(""),t.emitLine(`${n}void (*continuation_fn)(void*) = (void (*)(void*))sm->continuation_fn;`),t.emitLine(`${n}void* continuation_sm = sm->continuation_sm;`),t.emitLine(""),t.emitLine(`${n}if (continuation_fn != NULL) {`),i&&t.emitLine(`${n} ASYNC_DEBUG("${i}: Spawning continuation for escaped future: resume_fn=%p, sm=%p\\n", (void*)continuation_fn, continuation_sm);`),t.emitLine(""),t.emitLine(`${n} sm->continuation_fn = NULL;`),t.emitLine(`${n} sm->continuation_sm = NULL;`),t.emitLine(""),t.emitLine(`${n} yo_async_spawn_task(continuation_fn, continuation_sm);`),t.emitLine(`${n}}`),t.emitLine(""),t.emitLine(`${n}__yo_decr_rc((void*)sm);`),t.emitLine(""),t.emitLine(`${n}return;`)}var ea=j(()=>{});var ta,f_,zs=j(()=>{ce();Mr();ta=[...F.__yo_op_add,...F.__yo_op_sub,...F.__yo_op_mul,...F.__yo_op_div,...F.__yo_op_mod,...F.__yo_op_neg,...F.__yo_op_eq,...F.__yo_op_neq,...F.__yo_op_lt,...F.__yo_op_lte,...F.__yo_op_gt,...F.__yo_op_gte,...F.__yo_op_not,...F.__yo_op_bit_and,...F.__yo_op_bit_or,...F.__yo_op_bit_xor,...F.__yo_op_bit_complement,...F.__yo_op_bit_left_shift,...F.__yo_op_bit_right_shift,...F.__yo_ptr_add,...F.__yo_ptr_sub,...F.__yo_ptr_diff,...F.__yo_ptr_eq,...F.__yo_ptr_neq,...F.__yo_ptr_lt,...F.__yo_ptr_lte,...F.__yo_ptr_gt,...F.__yo_ptr_gte,...F.__yo_slice_len,...F.__yo_slice_new,...F.__yo_as,...F.__yo_getrandom,...F.__yo_arc4random_buf,...F.__yo_bcrypt_gen_random,...F.__yo_maybe_uninit_new,...F.__yo_maybe_uninit_as_ptr,...F.__yo_maybe_uninit_assume_init,...F.__yo_noop,...F.__yo_return_self,...F.__yo_ms_sleep],f_=new Set(["bool","usize","isize","u8","i8","u16","i16","u32","i32","u64","i64","f32","f64","char","short","ushort","int","uint","long","ulong","longlong","ulonglong","longdouble"])});function ve(e,t=!1){let n=new Set(["auto","break","case","char","const","continue","default","do","double","else","enum","extern","float","for","goto","if","inline","int","long","register","restrict","return","short","signed","sizeof","static","struct","switch","typedef","union","unsigned","void","volatile","while","_Alignas","_Alignof","_Atomic","_Bool","_Complex","_Generic","_Imaginary","_Noreturn","_Static_assert","_Thread_local","errno","stdin","stdout","stderr","NULL","true","false"]),r=e.replace(/[^a-zA-Z0-9_]/g,i=>`_u${i.charCodeAt(0)}_`);return!t&&n.has(r)&&(r="__yo_c_reserved_"+r),r}function q(e,t){var n,r,i,o,a,s,l;if(!e)return"int32_t";if(e.isExtern&&e.externName)return e.externName;switch(e.tag){case"unit":return"void";case"void":return"void";case"bool":return"bool";case"usize":return"size_t";case"isize":return"intptr_t";case"u8":return"uint8_t";case"i8":return"int8_t";case"u16":return"uint16_t";case"i16":return"int16_t";case"u32":return"uint32_t";case"i32":return"int32_t";case"u64":return"uint64_t";case"i64":return"int64_t";case"f32":return"float";case"f64":return"double";case"comptime_int":return"int32_t";case"comptime_float":return"double";case"comptime_string":return"uint8_t*";case"char":return"char";case"short":return"short";case"ushort":return"unsigned short";case"int":return"int";case"uint":return"unsigned int";case"long":return"long";case"ulong":return"unsigned long";case"longlong":return"long long";case"ulonglong":return"unsigned long long";case"longdouble":return"long double";case"Tuple":case"Struct":case"Union":case"Enum":{if(e.tag==="Enum"){let f=Hn(e);if(f)return q(f,t)}let u;switch(e.tag){case"Tuple":u="tuple";break;case"Struct":u="struct";break;case"Union":u="union";break;case"Enum":u="enum";break;default:throw new Error("Unreachable")}let c=(n=t.types[e.id])==null?void 0:n.cName;if(!c)throw new Error(`No C type name found for ${u} ${x(e)}`);return(e.tag==="Struct"||e.tag==="Enum")&&ze(e)&&e.isReferenceSemantics?`${c}*`:c}case"Function":return"void*";case"Dyn":{let u=(r=t.types[e.id])==null?void 0:r.cName;if(!u)throw new Error(`No C type name found for dynamic dispatch type ${x(e)}`);return u}case"Array":{let u=e,c=u.childType,f=u.length;if(wt(f)){let p=q(c,t),_=`Array_${ve(p)}_${f.value}`;return t.arrayStructTypes.has(_)||t.arrayStructTypes.set(_,{childType:p,length:typeof f.value=="bigint"?Number(f.value):f.value}),_}break}case"Slice":{let u=e,f=`Slice_${ve(q(u.childType,t))}`;return t.sliceStructTypes.has(f)||t.sliceStructTypes.set(f,{childType:q(u.childType,t)}),f}case"SomeType":{let u=e;if(rt(u)){if((i=u.resolvedConcreteType)!=null&&i.isExtern)return`${q(u.resolvedConcreteType,t)}*`;let c=(o=t.types[u.id])==null?void 0:o.cName;if(c)return`${c}*`;if(u.resolvedConcreteType&&z(u.resolvedConcreteType)&&rt(u.resolvedConcreteType)){let p=u.resolvedConcreteType,_=(a=t.types[p.id])==null?void 0:a.cName;if(_)return`${_}*`}if(u.resolvedConcreteType&&ze(u.resolvedConcreteType)){let p=u.resolvedConcreteType.id;for(let[_,d]of Object.entries(t.types))if(z(d.type)&&rt(d.type)&&d.type.resolvedConcreteType&&ze(d.type.resolvedConcreteType)&&d.type.resolvedConcreteType.id===p)return`${d.cName}*`}let f=Un(u);if(f){let p=(s=t.types[f.id])==null?void 0:s.cName;if(p)return`${p}*`}throw new Error(`Impl(Future) type has no registered concrete type. SomeType ID: ${u.id}, FutureModule: ${(f==null?void 0:f.id)??"none"}. Ensure async blocks are properly analyzed and their state machine types are registered.
189
189
  resolvedConcreteType: ${((l=u.resolvedConcreteType)==null?void 0:l.id)??"none"}
190
- registered type IDs: ${Object.keys(t.types).filter(p=>p.startsWith("sometype")).join(", ")}`)}return Qn(u)&&u.resolvedConcreteType||u.resolvedConcreteType?q(u.resolvedConcreteType,t):"void*"}case"Ptr":{let c=e.childType;if(Rt(c)){let _=q(c.childType,t),d=`Slice_${ve(_)}`;return t.sliceStructTypes.has(d)||t.sliceStructTypes.set(d,{childType:_}),`${d}*`}let f=q(c,t);return rn(c)?`${f}*`:qe(c)&&Hn(c)?`${f}*`:`${f}*`}case"Iso":{let u=e,c=u.childType,f=q(c,t),p=f.replace(/\*/g,"").trim(),_=`Iso_${ve(p)}`;return t.isoTypes||(t.isoTypes=new Map),t.isoTypes.has(_)||t.isoTypes.set(_,{childTypeCName:f,isoType:u}),_}case"Arc":{let u=e,c=u.childType,f=q(c,t),p=f.replace(/\*/g,"").trim(),_=`Arc_${ve(p)}`;return t.arcTypes||(t.arcTypes=new Map),t.arcTypes.has(_)||t.arcTypes.set(_,{childTypeCName:f,arcType:u}),_}}return`// Unknown type: ${x(e)}`}function Jt(e,t,n){let r=ve(t);return`${q(e,n)} ${r}`}function Zn(e,t,n){var i;let r=(i=n.types[e.id])==null?void 0:i.cName;if(!r)throw new Error(`No C type name found for enum ${e.typeName} (${x(e)})`);return`${r.toUpperCase()}_${t.toUpperCase()}`}function bo(e){return e.type.return.isCompileTimeOnly}function Ra(e){let t=e.body,n=null;return S(t)&&T(t,"begin")&&t.args.length===1&&S(t.args[0])&&T(t.args[0],ta)?n=t.args[0].func.token.value:S(t)&&T(t,ta)&&(n=t.func.token.value),n&&F.__yo_as.includes(n)?null:n}function Hn(e){if(e.variants.length!==2)return null;let t=null,n=null;for(let r of e.variants)if(!r.fields||r.fields.length===0){if(t)return null;t=r}else if(r.fields.length===1){let i=r.fields[0].type;if(_t(i)){if(n)return null;n=r}else return null}else return null;return t&&n&&n.fields?n.fields[0].type:null}function Ur(e){for(let t of e.variants)if(t.fields&&t.fields.length>0)return!1;return e.variants.length>0}function et(e,t){if(!t)return ve(e);let n=ue(t,e);if(n.length>0){let r=n[n.length-1];return ve(r.name,r.type.isExtern==="c")}return ve(e)}function bu(e){if(S(e)&&e.args.length>=1){let t=e.args[0];if(t&&H(t))return t.token.value}if(S(e)&&e.args.length===0&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[0])&&H(e.func.args[1])&&e.func.args[1].token.value===F.___dup[0])return e.func.args[0].token.value}function Yr(e){if(S(e)&&e.args.length===0&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[1])&&e.func.args[1].token.value===F.___drop[0]&&H(e.func.args[0]))return e.func.args[0].token.value;if(!S(e)||!T(e,F.___drop)||e.args.length<1)return;let t=e.args[0];if(!(!t||!H(t)))return t.token.value}function Bs(e){if(e){if(qn(e))return e;if(S(e)){let t=e;for(let n of t.args){let r=Bs(n);if(r)return r}}}}var zt=j(()=>{ft();Jr();Gt();ce();Ae();Mr();Je();ge();zs()});function p_(e){Bc=e}function B(e,t,n){if(!Bc)throw new Error("Internal Error: generateExpr function is not set.");return Bc(e,t,n)}var Bc,fn=j(()=>{});function eo(e,t,n){let r=z(t)&&t.resolvedConcreteType?t.resolvedConcreteType:t;if(!ut(r))return"";if(at(r)){let i=r.length;if(!wt(i))return"/* Error: array has non-constant length */";let o=n.emitter;o.emitLine(`for (size_t i = 0; i < ${i.value}; i++) {`);let a=eo(`(${e}).data[i]`,r.childType,n);return a&&o.emitLine(` ${a};`),o.emitLine("}"),""}if(st(r)){let i=n.emitter;for(let o=0;o<r.fields.length;o++){let a=r.fields[o].type,s=z(a)&&a.resolvedConcreteType?a.resolvedConcreteType:a;if(ut(s)){let l=eo(`(${e})._${o}`,a,n);l&&i.emitLine(`${l};`)}}return""}if(ot(r))return`__yo_decr_rc((void*)(${e}).data)`;if(rn(r))return`__yo_decr_rc((void*)(${e}))`;if(Fn(r))return`__yo_decr_rc_atomic((void*)(${e}))`;if(En(r))return`__yo_decr_rc_atomic((void*)(${e}))`;if(ze(r)||qe(r)){let i=Oi(r,n);if(i)return`${i}(${e})`}return""}function Pa(e,t,n){let r=z(t)&&t.resolvedConcreteType?t.resolvedConcreteType:t;if(at(r)){let i=r.length;if(!wt(i))return"/* Error: array has non-constant length */";let o=`temp_dup_${Nt("")}`,a=`i_${Nt("")}`,s=q(r,n),l=n.emitter;l.emitLine(`${s} ${o} = ${e};`),l.emitLine(`for (size_t ${a} = 0; ${a} < ${i.value}; ${a}++) {`);let u=Pa(`${o}.data[${a}]`,r.childType,n);return l.emitLine(` ${o}.data[${a}] = ${u};`),l.emitLine("}"),o}if(st(r)){let i=n.emitter,o=`temp_dup_tuple_${Nt("")}`,a=q(r,n);i.emitLine(`${a} ${o} = ${e};`);for(let s=0;s<r.fields.length;s++){let l=r.fields[s].type,u=z(l)&&l.resolvedConcreteType?l.resolvedConcreteType:l;if(ut(u)){let c=Pa(`${o}._${s}`,l,n);i.emitLine(`${o}._${s} = ${c};`)}}return o}if(ot(r))return`((${q(r,n)}){ .data = __yo_incr_rc((void*)(${e}).data), .vtable = (${e}).vtable })`;if(rn(r))return`((${q(r,n)})__yo_incr_rc((void*)(${e})))`;if(Fn(r))return`((${q(r,n)})__yo_incr_rc_atomic((void*)(${e})))`;if(En(r))return`((${q(r,n)})__yo_incr_rc_atomic((void*)(${e})))`;if(ze(r)||qe(r)){let i=ti(r,n);if(i)return`${i}(${e})`}return e}function Oi(e,t){var n;if(ze(e)||qe(e)||ot(e)||z(e)||Fn(e)||En(e)){let r=e.trait.fields.find(i=>i.label===F.___drop[0]);if(r&&r.assignedValue&&$e(r.assignedValue))return(n=t.functions[r.assignedValue.funcId])==null?void 0:n.cName}}function ti(e,t){var n;if(ze(e)||qe(e)||ot(e)||z(e)||Fn(e)||En(e)){let r=e.trait.fields.find(i=>i.label===F.___dup[0]);if(r&&r.assignedValue&&$e(r.assignedValue))return(n=t.functions[r.assignedValue.funcId])==null?void 0:n.cName}}function bn(e,t,n){var i;let r=n.emitter;if((i=e.$)!=null&&i.deferredDropExpressions)for(let o of e.$.deferredDropExpressions){let a=B(o,t,n);a&&r.emitLine(`${t}${a};`)}}function jt(e,t,n){var i;let r=n.emitter;if((i=e.$)!=null&&i.deferredDupExpressions){for(let o of e.$.deferredDupExpressions)if(S(o)){let a=B(o,t,n);a&&r.emitLine(`${t}${a};`)}}}var vr=j(()=>{ce();Ae();Je();yn();ge();zt();fn()});function Jn(e,t,n){var r,i,o,a,s,l,u,c;if(wt(e)){let f=(typeof e.value=="bigint",e.value.toString());return e.tag==="F32"?(f.includes(".")?f:f+".0")+"f":e.tag==="F64"||e.tag==="ComptimeFloat"?f.includes(".")?f:f+".0":e.tag==="U64"||e.tag==="Usize"?f+"ULL":e.tag==="I64"||e.tag==="Isize"?f+"LL":e.tag==="U32"?f+"U":f}else{if(Lt(e))return e.value?"true":"false";if(St(e)){let f=((r=n==null?void 0:n.$)==null?void 0:r.convertedRuntimeType)||((i=n==null?void 0:n.$)==null?void 0:i.type);if(f&&Bi(f)&&f.fields.length===1){let p=f.fields[0].type;if(Rt(p)){let _=q(f,t),d=JSON.stringify(e.value),g=Buffer.byteLength(e.value,"utf8");return`(${_}){ .data = (uint8_t*)${d}, .length = ${g} }`}}if(f&&Rt(f)){let p=q(f,t),_=JSON.stringify(e.value),d=Buffer.byteLength(e.value,"utf8");return`(${p}){ .data = (uint8_t*)${_}, .length = ${d} }`}return JSON.stringify(e.value)}else if(Dn(e)){let f=e.type;if(Hn(f)){let y=f.variants.find(h=>h.name===e.variantName);if(!y)return`// Error: Variant ${e.variantName} not found in enum`;if(!y.fields||y.fields.length===0)return"NULL";if(y.fields.length===1&&e.fields.length===1)return Jn(e.fields[0],t)}if(Ur(f))return Zn(f,e.variantName,t);let d=(o=t.types[f.id])==null?void 0:o.cName;if(!d)return`// Error: No C type name found for enum ${x(f)}`;let g=Zn(f,e.variantName,t);if(!e.fields||e.fields.length===0)return`(${d}){ .tag = ${g} }`;{let y=f.variants.find(v=>v.name===e.variantName);if(!y||!y.fields)return`// Error: Variant ${e.variantName} not found or has no fields`;let h=e.fields.map((v,E)=>{let $=y.fields[E];if($&&!Pe($.type)){let C=ve($.label),w=Jn(v,t);return`.${C} = ${w}`}return null}).filter(v=>v!==null);return h.length===0?`(${d}){ .tag = ${g} }`:`(${d}){ .tag = ${g}, .data = { .${e.variantName} = { ${h.join(", ")} } } }`}}else if($r(e)){let f=e.type,p=(a=t.types[f.id])==null?void 0:a.cName;if(!p)return`// Error: No C type name found for tuple ${x(f)}
190
+ registered type IDs: ${Object.keys(t.types).filter(p=>p.startsWith("sometype")).join(", ")}`)}return Qn(u)&&u.resolvedConcreteType||u.resolvedConcreteType?q(u.resolvedConcreteType,t):"void*"}case"Ptr":{let c=e.childType;if(Rt(c)){let _=q(c.childType,t),d=`Slice_${ve(_)}`;return t.sliceStructTypes.has(d)||t.sliceStructTypes.set(d,{childType:_}),`${d}*`}let f=q(c,t);return rn(c)?`${f}*`:qe(c)&&Hn(c)?`${f}*`:`${f}*`}case"Iso":{let u=e,c=u.childType,f=q(c,t),p=f.replace(/\*/g,"").trim(),_=`Iso_${ve(p)}`;return t.isoTypes||(t.isoTypes=new Map),t.isoTypes.has(_)||t.isoTypes.set(_,{childTypeCName:f,isoType:u}),_}case"Arc":{let u=e,c=u.childType,f=q(c,t),p=f.replace(/\*/g,"").trim(),_=`Arc_${ve(p)}`;return t.arcTypes||(t.arcTypes=new Map),t.arcTypes.has(_)||t.arcTypes.set(_,{childTypeCName:f,arcType:u}),_}}return`// Unknown type: ${x(e)}`}function Jt(e,t,n){let r=ve(t);return`${q(e,n)} ${r}`}function Zn(e,t,n){var i;let r=(i=n.types[e.id])==null?void 0:i.cName;if(!r)throw new Error(`No C type name found for enum ${e.typeName} (${x(e)})`);return`${r.toUpperCase()}_${t.toUpperCase()}`}function bo(e){return e.type.return.isCompileTimeOnly}function Ra(e){let t=e.body,n=null;return S(t)&&T(t,"begin")&&t.args.length===1&&S(t.args[0])&&T(t.args[0],ta)?n=t.args[0].func.token.value:S(t)&&T(t,ta)&&(n=t.func.token.value),n&&F.__yo_as.includes(n)?null:n}function Hn(e){if(e.variants.length!==2)return null;let t=null,n=null;for(let r of e.variants)if(!r.fields||r.fields.length===0){if(t)return null;t=r}else if(r.fields.length===1){let i=r.fields[0].type;if(_t(i)){if(n)return null;n=r}else return null}else return null;return t&&n&&n.fields?n.fields[0].type:null}function Ur(e){for(let t of e.variants)if(t.fields&&t.fields.length>0)return!1;return e.variants.length>0}function et(e,t){if(!t)return ve(e);let n=ue(t,e);if(n.length>0){let r=n[n.length-1];return ve(r.name,r.type.isExtern==="c")}return ve(e)}function bu(e){if(S(e)&&e.args.length>=1){let t=e.args[0];if(t&&H(t))return t.token.value}if(S(e)&&e.args.length===0&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[0])&&H(e.func.args[1])&&e.func.args[1].token.value===F.___dup[0])return e.func.args[0].token.value}function Yr(e){if(S(e)&&e.args.length===0&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[1])&&e.func.args[1].token.value===F.___drop[0]&&H(e.func.args[0]))return e.func.args[0].token.value;if(!S(e)||!T(e,F.___drop)||e.args.length<1)return;let t=e.args[0];if(!(!t||!H(t)))return t.token.value}function Bs(e){if(e){if(qn(e))return e;if(S(e)){let t=e;for(let n of t.args){let r=Bs(n);if(r)return r}}}}var zt=j(()=>{ft();Jr();Gt();ce();Ae();Mr();Je();ge();zs()});function p_(e){Bc=e}function B(e,t,n){if(!Bc)throw new Error("Internal Error: generateExpr function is not set.");return Bc(e,t,n)}var Bc,fn=j(()=>{});function eo(e,t,n){let r=z(t)&&t.resolvedConcreteType?t.resolvedConcreteType:t;if(!ut(r))return"";if(at(r)){let i=r.length;if(!wt(i))return"/* Error: array has non-constant length */";let o=n.emitter;o.emitLine(`for (size_t i = 0; i < ${i.value}; i++) {`);let a=eo(`(${e}).data[i]`,r.childType,n);return a&&o.emitLine(` ${a};`),o.emitLine("}"),""}if(st(r)){let i=n.emitter;for(let o=0;o<r.fields.length;o++){let a=r.fields[o].type,s=z(a)&&a.resolvedConcreteType?a.resolvedConcreteType:a;if(ut(s)){let l=eo(`(${e})._${o}`,a,n);l&&i.emitLine(`${l};`)}}return""}if(ot(r))return`__yo_decr_rc((void*)(${e}).data)`;if(rn(r))return`__yo_decr_rc((void*)(${e}))`;if(Fn(r))return`__yo_decr_rc_atomic((void*)(${e}))`;if(En(r))return`__yo_decr_rc_atomic((void*)(${e}))`;if(ze(r)||qe(r)){let i=Ri(r,n);if(i)return`${i}(${e})`}return""}function Pa(e,t,n){let r=z(t)&&t.resolvedConcreteType?t.resolvedConcreteType:t;if(at(r)){let i=r.length;if(!wt(i))return"/* Error: array has non-constant length */";let o=`temp_dup_${Nt("")}`,a=`i_${Nt("")}`,s=q(r,n),l=n.emitter;l.emitLine(`${s} ${o} = ${e};`),l.emitLine(`for (size_t ${a} = 0; ${a} < ${i.value}; ${a}++) {`);let u=Pa(`${o}.data[${a}]`,r.childType,n);return l.emitLine(` ${o}.data[${a}] = ${u};`),l.emitLine("}"),o}if(st(r)){let i=n.emitter,o=`temp_dup_tuple_${Nt("")}`,a=q(r,n);i.emitLine(`${a} ${o} = ${e};`);for(let s=0;s<r.fields.length;s++){let l=r.fields[s].type,u=z(l)&&l.resolvedConcreteType?l.resolvedConcreteType:l;if(ut(u)){let c=Pa(`${o}._${s}`,l,n);i.emitLine(`${o}._${s} = ${c};`)}}return o}if(ot(r))return`((${q(r,n)}){ .data = __yo_incr_rc((void*)(${e}).data), .vtable = (${e}).vtable })`;if(rn(r))return`((${q(r,n)})__yo_incr_rc((void*)(${e})))`;if(Fn(r))return`((${q(r,n)})__yo_incr_rc_atomic((void*)(${e})))`;if(En(r))return`((${q(r,n)})__yo_incr_rc_atomic((void*)(${e})))`;if(ze(r)||qe(r)){let i=ti(r,n);if(i)return`${i}(${e})`}return e}function Ri(e,t){var n;if(ze(e)||qe(e)||ot(e)||z(e)||Fn(e)||En(e)){let r=e.trait.fields.find(i=>i.label===F.___drop[0]);if(r&&r.assignedValue&&$e(r.assignedValue))return(n=t.functions[r.assignedValue.funcId])==null?void 0:n.cName}}function ti(e,t){var n;if(ze(e)||qe(e)||ot(e)||z(e)||Fn(e)||En(e)){let r=e.trait.fields.find(i=>i.label===F.___dup[0]);if(r&&r.assignedValue&&$e(r.assignedValue))return(n=t.functions[r.assignedValue.funcId])==null?void 0:n.cName}}function bn(e,t,n){var i;let r=n.emitter;if((i=e.$)!=null&&i.deferredDropExpressions)for(let o of e.$.deferredDropExpressions){let a=B(o,t,n);a&&r.emitLine(`${t}${a};`)}}function jt(e,t,n){var i;let r=n.emitter;if((i=e.$)!=null&&i.deferredDupExpressions){for(let o of e.$.deferredDupExpressions)if(S(o)){let a=B(o,t,n);a&&r.emitLine(`${t}${a};`)}}}var vr=j(()=>{ce();Ae();Je();yn();ge();zt();fn()});function Jn(e,t,n){var r,i,o,a,s,l,u,c;if(wt(e)){let f=(typeof e.value=="bigint",e.value.toString());return e.tag==="F32"?(f.includes(".")?f:f+".0")+"f":e.tag==="F64"||e.tag==="ComptimeFloat"?f.includes(".")?f:f+".0":e.tag==="U64"||e.tag==="Usize"?f+"ULL":e.tag==="I64"||e.tag==="Isize"?f+"LL":e.tag==="U32"?f+"U":f}else{if(Lt(e))return e.value?"true":"false";if(St(e)){let f=((r=n==null?void 0:n.$)==null?void 0:r.convertedRuntimeType)||((i=n==null?void 0:n.$)==null?void 0:i.type);if(f&&Gi(f)&&f.fields.length===1){let p=f.fields[0].type;if(Rt(p)){let _=q(f,t),d=JSON.stringify(e.value),g=Buffer.byteLength(e.value,"utf8");return`(${_}){ .data = (uint8_t*)${d}, .length = ${g} }`}}if(f&&Rt(f)){let p=q(f,t),_=JSON.stringify(e.value),d=Buffer.byteLength(e.value,"utf8");return`(${p}){ .data = (uint8_t*)${_}, .length = ${d} }`}return JSON.stringify(e.value)}else if(Dn(e)){let f=e.type;if(Hn(f)){let y=f.variants.find(h=>h.name===e.variantName);if(!y)return`// Error: Variant ${e.variantName} not found in enum`;if(!y.fields||y.fields.length===0)return"NULL";if(y.fields.length===1&&e.fields.length===1)return Jn(e.fields[0],t)}if(Ur(f))return Zn(f,e.variantName,t);let d=(o=t.types[f.id])==null?void 0:o.cName;if(!d)return`// Error: No C type name found for enum ${x(f)}`;let g=Zn(f,e.variantName,t);if(!e.fields||e.fields.length===0)return`(${d}){ .tag = ${g} }`;{let y=f.variants.find(v=>v.name===e.variantName);if(!y||!y.fields)return`// Error: Variant ${e.variantName} not found or has no fields`;let h=e.fields.map((v,E)=>{let $=y.fields[E];if($&&!Pe($.type)){let C=ve($.label),w=Jn(v,t);return`.${C} = ${w}`}return null}).filter(v=>v!==null);return h.length===0?`(${d}){ .tag = ${g} }`:`(${d}){ .tag = ${g}, .data = { .${e.variantName} = { ${h.join(", ")} } } }`}}else if($r(e)){let f=e.type,p=(a=t.types[f.id])==null?void 0:a.cName;if(!p)return`// Error: No C type name found for tuple ${x(f)}
191
191
  `;let _=e.fields.map((d,g)=>{let y=Jn(d,t);return`._${g} = ${y}`});return`(${p}){ ${_.join(", ")} }`}else if(Ir(e)){let f=e.type;if(f&&ze(f)){let p=(s=t.types[f.id])==null?void 0:s.cName;if(!p)return`// Error: No C type name found for struct ${x(f)}
192
192
  `;if(f.isNewtype&&f.fields.length===1&&e.fields.length===1){let _=Jn(e.fields[0],t);return`((${p})(${_}))`}if(f.isReferenceSemantics){let _=e.fields.map(g=>Jn(g,t));return`${`__yo_new_${p}`}(${_.join(", ")})`}else{let _=e.fields.map((d,g)=>{let y=d,h=st(f)?`_${g}`:ve(f.fields[g].label),v=Jn(y,t);return`.${h} = ${v}`});return`(${p}){ ${_.join(", ")} }`}}}else if(oi(e)){let f=e.type,p=q(f,t),_=e.elements.map(d=>Jn(d,t));return`(${p}){ .data = { ${_.join(", ")} } }`}else if($e(e)){let f=(l=t.functions[e.funcId])==null?void 0:l.cName;return f||`// Error: No C function name found for function value with ID ${e.funcId}
193
193
  `}else if(Y(e)){let f=e.value;if(f)return t.types[f.id]?t.types[f.id].cName:`/* Error: No C type name found for type ${x(f)} */`}else if(ya(e)){let f=e.targetValue[0];if(f){let p=((u=n==null?void 0:n.$)==null?void 0:u.convertedRuntimeType)||((c=n==null?void 0:n.$)==null?void 0:c.type);if(p&&_t(p)){let _=p.childType,d=Jn(f,t,{$:{type:_,convertedRuntimeType:_}});if(d&&!d.startsWith("/*")&&!d.startsWith("//"))return`(&${d})`}}return`/* Error: Cannot generate pointer value ${vt(e)} */`}}return`/* skip generating: ${vt(e)} */`}var Ua=j(()=>{Ae();Je();ge();_r();zt()});function za(e,t,n){if(e===t)return!0;if(e.tag==="FnCall"){if(n&&n(e))return!1;if(za(e.func,t,n))return!0;for(let r of e.args)if(za(r,t,n))return!0}return!1}function n$(e,t,n){for(let r=0;r<t.length;r++)if(za(e,t[r].expr,n))return r;return-1}function __(e,t,n){let r=[],i=n==null?void 0:n.shouldSkipBody;if(e.tag!=="FnCall"||!T(e,"begin"))return t.length===0?[{stateNumber:0,expressions:[e],suspensionPoint:null}]:[{stateNumber:0,expressions:[e],suspensionPoint:t[0]??null}];let o=e.args,a=[],s=[];for(let l of o){let u=n$(l,t,i),c=(n==null?void 0:n.handleReturnStatements)&&($n(l,"return")||T(l,"return"));if(u!==-1){if(s.push(l),a.push(s),s=[],n!=null&&n.handleSequentialSuspensions)for(let f=u+1;f<t.length&&za(l,t[f].expr,i);f++)a.push([])}else if(c){s.push(l),a.push(s),s=[];break}else s.push(l)}s.length>0&&a.push(s);for(let l=0;l<a.length;l++){let u=a[l],c=l<t.length?t[l]:null;r.push({stateNumber:l,expressions:u,suspensionPoint:c})}return r}var d_=j(()=>{ce()});function m_(e,t){let r=__(e,t,{shouldSkipBody:qn,handleReturnStatements:!0,handleSequentialSuspensions:!0}).map(i=>({stateNumber:i.stateNumber,expressions:i.expressions,awaitPoint:i.suspensionPoint}));return r.length>0&&r[r.length-1].awaitPoint!==null&&r.push({stateNumber:r.length,expressions:[],awaitPoint:null}),r}function r$(e,t){return za(e,t,qn)}function y_(e,t,n,r=!1){let i=n.emitter;for(let o=0;o<e.expressions.length;o++){let a=e.expressions[o],s=o===e.expressions.length-1,l=e.awaitPoint&&r$(a,e.awaitPoint.expr),u=e.awaitPoint&&a.tag==="FnCall"&&(T(a,D.while)||T(a,D.cond)||T(a,D.match))&&mr(a);if((l||u)&&e.awaitPoint)Ya(a,e.awaitPoint,e.stateNumber,t,n);else if(s&&r){let c=B(a,t,n);c&&(i.emitLine(`${t}// Store final expression result`),i.emitLine(`${t}sm->result = ${c};`))}else{let c=B(a,t,n);!c||!a.$||en(a.$.env.modulePath,c)||i.emitLine(`${t}${c};`)}}}function Ya(e,t,n,r,i){var a,s;let o=i.emitter;if(e.tag==="FnCall"&&Nr(e)){let l=e.args[0];if(!l){o.emitLine(`${r}// Error: await without argument`);return}if(t.futureVariableId===void 0){let u=B(l,r,i);o.emitLine(`${r}// Store pattern-matched Future for await ${t.index}`),o.emitLine(`${r}sm->await_future_${t.index} = ${u};`)}else o.emitLine(`${r}// Prepare for await (future already stored in state machine variable)`);return}if(e.tag==="FnCall"&&T(e,":=")){let l=e.args[0],u=e.args[1];if(!l||!u){o.emitLine(`${r}// Error: Invalid assignment expression`);return}if(u.tag==="FnCall"&&Nr(u)){let c=u.args[0];if(!c){o.emitLine(`${r}// Error: await without argument`);return}let f=(a=l.token)==null?void 0:a.value;if(!f||!l.$){o.emitLine(`${r}// Error: Invalid variable name`);return}if(t.futureVariableId===void 0){let p=B(c,r,i);o.emitLine(`${r}// Store Future for await (variable: ${f})`),o.emitLine(`${r}sm->await_future_${t.index} = ${p};`)}else o.emitLine(`${r}// Store Future for await (variable: ${f}) - future already in state machine`);return}if(u.tag==="FnCall"&&T(u,D.cond)){let c;if(l.tag==="Atom"&&l.token.type==="identifier"&&l.$){let f=l.token.value,p=ue(l.$.env,f);p.length>0&&(c=p[p.length-1].id)}Gs(u,t,r,i,c);return}if(u.tag==="FnCall"&&T(u,D.match)){let c;if(l.tag==="Atom"&&l.token.type==="identifier"&&l.$){let f=l.token.value,p=ue(l.$.env,f);p.length>0&&(c=p[p.length-1].id)}Ws(u,t,r,i,c);return}}if(e.tag==="FnCall"&&T(e,"=")){let l=e.args[0],u=e.args[1];if(l&&u){if(u.tag==="FnCall"&&T(u,D.cond)){let c=B(l,r,i);Gs(u,t,r,i,void 0,c||void 0);return}if(u.tag==="FnCall"&&T(u,D.match)){let c=B(l,r,i);Ws(u,t,r,i,void 0,c||void 0);return}}}if(e.tag==="FnCall"&&T(e,D.cond)){Gs(e,t,r,i);return}if(e.tag==="FnCall"&&T(e,D.match)){Ws(e,t,r,i);return}if(e.tag==="FnCall"&&T(e,D.while)){Wc(e,t,r,i);return}o.emitLine(`${r}// ERROR: Unsupported pattern for await expression`),o.emitLine(`${r}// Expression type: ${e.tag}, function: ${e.tag==="FnCall"?e.func.tag==="Atom"?(s=e.func.token)==null?void 0:s.value:e.func.tag:"N/A"}`)}function Gs(e,t,n,r,i,o){var y,h,v,E,$,C,w,k,b,A,I,N,M,V,O,W;let a=r.emitter;if(e.tag!=="FnCall"||!T(e,D.cond)){a.emitLine(`${n}// Error: Expected cond expression`);return}let s=e.args;if(s.length===0){a.emitLine(`${n}// Error: cond must have at least one branch`);return}let l=[],u=-1;for(let P=0;P<s.length;P++){let G=s[P];if(G.tag==="FnCall"&&T(G,"=>")){let U=G.args[0];if(U&&!(Lt((y=U.$)==null?void 0:y.value)&&U.$.value.value===!1)){u=P;break}}}let c=!1;if(u>=0){let P=s[u];if(P.tag==="FnCall"&&T(P,"=>")){let G=P.args[0];G&&Lt((h=G.$)==null?void 0:h.value)&&G.$.value.value===!0&&(c=!0)}}if(c&&u>=0){let P=s[u],G=S(P)?P.args[1]:void 0;if(G)if(Co(G)){let ee=Wa(G,t,n,r),fe=(v=r.asyncWhileLoopInfo)==null?void 0:v.get(t.index);if(fe&&ee.length>0){let de=(E=r.asyncCondBranchInfo)==null?void 0:E.get(t.index),Q=(de==null?void 0:de.branches.some(pe=>pe.hasAwait&&pe.remainingExprs&&pe.remainingExprs.length>0))??!1;fe.condBranchPostWhileExprs={branchIndex:u,condBranchFieldIndex:t.index,exprs:ee,deferredDropExpressions:($=G.$)==null?void 0:$.deferredDropExpressions,skipCondBranchCheck:Q},l.push({index:u,value:G,hasAwait:!0,remainingExprs:[],deferredDropExpressions:(C=G.$)==null?void 0:C.deferredDropExpressions})}else l.push({index:u,value:G,hasAwait:!0,remainingExprs:ee,deferredDropExpressions:(w=G.$)==null?void 0:w.deferredDropExpressions})}else{if(Ba(e,G,r,i,o))Ga(G,n,r);else if(S(G)&&T(G,D.begin)){let ee=G.args;for(let fe=0;fe<ee.length;fe++){let de=ee[fe],Q=B(de,n,r);if(Q==="break"&&t.isInsideWhile)a.emitLine(`${n}sm->while_loop_${t.index}_active = false;`),a.emitLine(`${n}goto while_loop_${t.index}_end;`);else{let pe=Q==="break"||Q==="continue"||(Q==null?void 0:Q.includes("return"));Q&&(pe||de.$&&!en(de.$.env.modulePath,Q))&&a.emitLine(`${n}${Q};`)}}if((k=G.$)!=null&&k.deferredDropExpressions)for(let fe of G.$.deferredDropExpressions){let de=B(fe,n,r);de&&a.emitLine(`${n}${de};`)}}else{let ee=B(G,n,r);if(ee==="break"&&t.isInsideWhile)a.emitLine(`${n}sm->while_loop_${t.index}_active = false;`),a.emitLine(`${n}goto while_loop_${t.index}_end;`);else{let fe=ee==="break"||ee==="continue"||(ee==null?void 0:ee.includes("return"));ee&&(fe||G.$&&!en(G.$.env.modulePath,ee))&&a.emitLine(`${n}${ee};`)}}l.push({index:u,value:G,hasAwait:!1})}r.asyncCondBranchInfo||(r.asyncCondBranchInfo=new Map);let U=r.asyncCondBranchInfo.get(t.index);((U==null?void 0:U.branches.some(re=>re.hasAwait&&re.remainingExprs&&re.remainingExprs.length>0))??!1)||r.asyncCondBranchInfo.set(t.index,{branches:l,targetVariableId:i,targetAssignmentCode:o});return}let f=!1,p=0,_=n;for(let P=0;P<s.length;P++){let G=s[P];if(G.tag!=="FnCall"||!T(G,"=>")){a.emitLine(`${_}// Error: Expected => pair in cond`);continue}let U=G.args[0],X=G.args[1];if(!U||!X){a.emitLine(`${_}// Error: Invalid pair in cond`);continue}if(Lt((b=U.$)==null?void 0:b.value)&&U.$.value.value===!1)continue;f&&(a.emitLine(`${_}else {`),p++,_+=" ");let re=P===s.length-1&&U.tag==="Atom"&&((A=U.token)==null?void 0:A.value)==="true"?null:B(U,_,r);re?a.emitLine(`${_}if (${re}) {`):a.emitLine(`${_}{`),f=!0;let ee=`${_} `;if(Co(X)){a.emitLine(`${ee}sm->cond_branch_${t.index} = ${P};`);let de=Wa(X,t,ee,r),Q=(I=r.asyncWhileLoopInfo)==null?void 0:I.get(t.index);if(Q&&de.length>0){let pe=(N=r.asyncCondBranchInfo)==null?void 0:N.get(t.index),Z=(pe==null?void 0:pe.branches.some(me=>me.hasAwait&&me.remainingExprs&&me.remainingExprs.length>0))??!1;Q.condBranchPostWhileExprs={branchIndex:P,condBranchFieldIndex:t.index,exprs:de,deferredDropExpressions:(M=X.$)==null?void 0:M.deferredDropExpressions,skipCondBranchCheck:Z},l.push({index:P,value:X,hasAwait:!0,remainingExprs:[],deferredDropExpressions:(V=X.$)==null?void 0:V.deferredDropExpressions})}else l.push({index:P,value:X,hasAwait:!0,remainingExprs:de,deferredDropExpressions:(O=X.$)==null?void 0:O.deferredDropExpressions})}else{if(Ba(e,X,r,i,o))Ga(X,ee,r);else if(S(X)&&T(X,D.begin)){let de=X.args;for(let Q=0;Q<de.length;Q++){let pe=de[Q],Z=B(pe,ee,r);if(Z==="break"&&t.isInsideWhile)a.emitLine(`${ee}sm->while_loop_${t.index}_active = false;`),a.emitLine(`${ee}goto while_loop_${t.index}_end;`);else{let me=Z==="break"||Z==="continue"||(Z==null?void 0:Z.includes("return"));Z&&(me||pe.$&&!en(pe.$.env.modulePath,Z))&&a.emitLine(`${ee}${Z};`)}}if((W=X.$)!=null&&W.deferredDropExpressions)for(let Q of X.$.deferredDropExpressions){let pe=B(Q,ee,r);pe&&a.emitLine(`${ee}${pe};`)}}else{let de=B(X,ee,r);if(de==="break"&&t.isInsideWhile)a.emitLine(`${ee}sm->while_loop_${t.index}_active = false;`),a.emitLine(`${ee}goto while_loop_${t.index}_end;`);else{let Q=de==="break"||de==="continue"||(de==null?void 0:de.includes("return"));de&&(Q||X.$&&!en(X.$.env.modulePath,de))&&a.emitLine(`${ee}${de};`)}}l.push({index:P,value:X,hasAwait:!1})}a.emitLine(`${_}}`)}for(let P=0;P<p;P++)_=_.slice(0,-2),a.emitLine(`${_}}`);r.asyncCondBranchInfo||(r.asyncCondBranchInfo=new Map);let d=r.asyncCondBranchInfo.get(t.index);((d==null?void 0:d.branches.some(P=>P.hasAwait&&P.remainingExprs&&P.remainingExprs.length>0))??!1)||r.asyncCondBranchInfo.set(t.index,{branches:l,targetVariableId:i,targetAssignmentCode:o})}function Ba(e,t,n,r,i){return!r&&!i&&n.asyncBodyReturnExpr!==void 0&&e===n.asyncBodyReturnExpr&&!!n.inAsyncStateMachine&&!g_(t)}function Ga(e,t,n){var o,a;let r=n.emitter,i=Pe((o=e.$)==null?void 0:o.type);if(S(e)&&T(e,D.begin)){let s=e.args;for(let u=0;u<s.length-1;u++){let c=s[u],f=B(c,t,n);f&&c.$&&!en(c.$.env.modulePath,f)&&r.emitLine(`${t}${f};`)}let l=s[s.length-1];if(l&&!i){let u=B(l,t,n);u&&r.emitLine(`${t}sm->result = ${u};`)}if((a=e.$)!=null&&a.deferredDropExpressions)for(let u of e.$.deferredDropExpressions){let c=B(u,t,n);c&&r.emitLine(`${t}${c};`)}}else if(!i){let s=B(e,t,n);s&&r.emitLine(`${t}sm->result = ${s};`)}if(r.emitLine(`${t}// Drop local variables before early completion`),n.pendingDeferredDrops)for(let s of n.pendingDeferredDrops){let l=B(s,t,n);l&&l.includes("sm->")&&r.emitLine(`${t}${l};`)}Ji({emitter:r,indent:t,resultCode:void 0,debugLabel:n.currentFunctionName}),r.emitLine(`${t}return;`)}function Co(e){if(e.tag==="FnCall"&&Nr(e))return!0;if(e.tag==="FnCall"){for(let t of e.args)if(Co(t))return!0}return!1}function g_(e){if($n(e,"return")||T(e,"return"))return!0;if(e.tag==="FnCall"){for(let t of e.args)if(g_(t))return!0}return!1}function Ws(e,t,n,r,i,o){var d,g,y,h,v,E;let a=r.emitter;if(e.tag!=="FnCall"||!T(e,D.match)){a.emitLine(`${n}// Error: Expected match expression`);return}let s=e.args[0],l=e.args.slice(1);if(!s||l.length===0){a.emitLine(`${n}// Error: match must have a value and at least one case`);return}let u=B(s,n,r),c=(d=s.$)==null?void 0:d.type;if(!c){a.emitLine(`${n}// Error: match value has no type`);return}if((g=e.$)!=null&&g.isPrimitiveMatch){o$(e,l,u,t,n,r,i,o);return}if(!qe(c)){a.emitLine(`${n}// Error: match requires an enum type or primitive type`);return}let f=c,p=(y=r.types[f.id])==null?void 0:y.cName;if(!p){a.emitLine(`${n}// Error: enum type has no C name`);return}let _=Hn(f);if(_){let $=-1,C=-1,w;for(let k=0;k<l.length;k++){let b=l[k];if(S(b)&&T(b,"=>",2)){let A=b.args[0];if(A&&S(A)&&T(A,"."))$=k;else if(A&&S(A)){let I=A.func;I&&S(I)&&T(I,".")&&(C=k,A.args.length>0&&H(A.args[0])&&(w=A.args[0].token.value))}}}if(a.emitLine(`${n}if (${u} != NULL) {`),C>=0){let k=l[C];if(!S(k))a.emitLine(`${n} // Error: Expected => in case`);else{let b=k.args[1];if(w){let A=r,I=!1,N;if(A.stateMachineVariables){for(let[M,V]of A.stateMachineVariables)if(V.name===w){I=!0,N=M;break}}I&&N?a.emitLine(`${n} sm->var_${N} = ${u};`):a.emitLine(`${n} ${q(_,r)} ${w} = ${u};`)}if(a.emitLine(`${n} sm->cond_branch_${t.index} = ${C};`),Co(b)){let A=Wa(b,t,n+" ",r);if(A.length>0){let I=r;I.asyncCondBranchInfo||(I.asyncCondBranchInfo=new Map);let N=I.asyncCondBranchInfo.get(t.index)||{branches:[]};N.branches.push({index:C,value:b,hasAwait:!0,remainingExprs:A,deferredDropExpressions:(h=b.$)==null?void 0:h.deferredDropExpressions}),I.asyncCondBranchInfo.set(t.index,N)}}else if(Ba(e,b,r,i,o))Ga(b,n+" ",r);else{let A=B(b,n+" ",r);if(i){let I=ve(`var_${i}`);A&&a.emitLine(`${n} sm->${I} = ${A};`)}else o?A&&a.emitLine(`${n} ${o} = ${A};`):A&&b.$&&!en(b.$.env.modulePath,A)&&a.emitLine(`${n} ${A};`)}}}if(a.emitLine(`${n}} else {`),$>=0){let k=l[$];if(!S(k))a.emitLine(`${n} // Error: Expected => in case`);else{let b=k.args[1];if(a.emitLine(`${n} sm->cond_branch_${t.index} = ${$};`),Co(b)){let A=Wa(b,t,n+" ",r);if(A.length>0){let I=r;I.asyncCondBranchInfo||(I.asyncCondBranchInfo=new Map);let N=I.asyncCondBranchInfo.get(t.index)||{branches:[]};N.branches.push({index:$,value:b,hasAwait:!0,remainingExprs:A,deferredDropExpressions:(v=b.$)==null?void 0:v.deferredDropExpressions}),I.asyncCondBranchInfo.set(t.index,N)}}else if(Ba(e,b,r,i,o))Ga(b,n+" ",r);else{let A=B(b,n+" ",r);if(i){let I=ve(`var_${i}`);A&&a.emitLine(`${n} sm->${I} = ${A};`)}else o?A&&a.emitLine(`${n} ${o} = ${A};`):A&&b.$&&!en(b.$.env.modulePath,A)&&a.emitLine(`${n} ${A};`)}}}a.emitLine(`${n}}`)}else{a.emitLine(`${n}switch (${u}.tag) {`);let $=!1;for(let C=0;C<l.length;C++){let w=l[C];if(!S(w)||!T(w,"=>",2))continue;let k=w.args[0],b=w.args[1],A=H(k)&&k.token.value==="_",I;if(!A){if(S(k)&&T(k,".",1))I=k.args[0].token.value;else if(S(k)){let N=k.func;N&&S(N)&&T(N,".",1)&&(I=N.args[0].token.value)}}if(!A&&!I){a.emitLine(`${n} // Error: Could not extract variant name`);continue}if(A)$=!0,a.emitLine(`${n} default: {`);else{let N=`${p.toUpperCase()}_${I.toUpperCase()}`;a.emitLine(`${n} case ${N}: {`)}if(a.emitLine(`${n} sm->cond_branch_${t.index} = ${C};`),S(k)&&k.args.length>=1){let N=k.func;if(N&&S(N)&&T(N,".")){let M=f.variants.find(V=>V.name===I);if(M&&M.fields)for(let V=0;V<Math.min(k.args.length,M.fields.length);V++){let O=k.args[V],W=M.fields[V];if(H(O)&&W){let P=O.token.value,G=ve(P),U=r,X=!1,re;if(U.stateMachineVariables){for(let[de,Q]of U.stateMachineVariables)if(Q.name===P){X=!0,re=de;break}}let ee=ve(W.label,W.type.isExtern==="c"),fe=`${u}.data.${I}.${ee}`;if(X&&re)a.emitLine(`${n} sm->var_${re} = ${fe};`);else{let de=q(W.type,r);a.emitLine(`${n} ${de} ${G} = ${fe};`)}}}}}if(Co(b)){let N=Wa(b,t,n+" ",r);if(N.length>0){let M=r;M.asyncCondBranchInfo||(M.asyncCondBranchInfo=new Map);let V=M.asyncCondBranchInfo.get(t.index)||{branches:[]};V.branches.push({index:C,value:b,hasAwait:!0,remainingExprs:N,deferredDropExpressions:(E=b.$)==null?void 0:E.deferredDropExpressions}),M.asyncCondBranchInfo.set(t.index,V)}}else if(Ba(e,b,r,i,o))Ga(b,n+" ",r);else{let N=B(b,n+" ",r);if(i){let M=ve(`var_${i}`);N&&a.emitLine(`${n} sm->${M} = ${N};`)}else o?N&&a.emitLine(`${n} ${o} = ${N};`):N&&b.$&&!en(b.$.env.modulePath,N)&&a.emitLine(`${n} ${N};`)}a.emitLine(`${n} break;`),a.emitLine(`${n} }`)}$||a.emitLine(`${n} default: break;`),a.emitLine(`${n}}`)}}function i$(e){return S(e)?T(e,"|",2):!1}function Gc(e){if(!i$(e))return[e];if(e.tag!=="FnCall")return[e];let t=e.args[0],n=e.args[1];return[...Gc(t),...Gc(n)]}function o$(e,t,n,r,i,o,a,s){var c,f,p;let l=o.emitter,u=[];l.emitLine(`${i}switch (${n}) {`);for(let _=0;_<t.length;_++){let d=t[_];if(!S(d)||!T(d,"=>",2))continue;let g=d.args[0],y=d.args[1];if($n(g,"_"))l.emitLine(`${i} default:`);else{let h=(c=g.$)==null?void 0:c.primitivePatternValues;if(h&&h.length>0){for(let v of h)if(v!==void 0){let E=Jn(v,o);l.emitLine(`${i} case ${E}:`)}}else{let v=Gc(g);for(let E of v){let $=(f=E.$)==null?void 0:f.value;if($!==void 0){let C=Jn($,o);l.emitLine(`${i} case ${C}:`)}}}}if(l.emitLine(`${i} sm->cond_branch_${r.index} = ${_};`),Co(y)){let h=Wa(y,r,i+" ",o);u.push({index:_,value:y,hasAwait:!0,remainingExprs:h,deferredDropExpressions:(p=y.$)==null?void 0:p.deferredDropExpressions})}else{if(Ba(e,y,o,a,s))Ga(y,i+" ",o);else{let h=B(y,i+" ",o);if(a){let v=ve(`var_${a}`);h&&l.emitLine(`${i} sm->${v} = ${h};`)}else s?h&&l.emitLine(`${i} ${s} = ${h};`):h&&y.$&&!en(y.$.env.modulePath,h)&&l.emitLine(`${i} ${h};`)}u.push({index:_,value:y,hasAwait:!1})}l.emitLine(`${i} break;`)}l.emitLine(`${i}}`),o.asyncCondBranchInfo||(o.asyncCondBranchInfo=new Map),o.asyncCondBranchInfo.set(r.index,{branches:u,targetVariableId:a,targetAssignmentCode:s})}function Wa(e,t,n,r){let i=r.emitter,o=[];if(e.tag!=="FnCall"||!T(e,"begin"))return i.emitLine(`${n}// Error: Expected begin block in cond branch with await`),o;let a=e.args,s=!1;for(let l of a){if(s){o.push(l);continue}if(Co(l))if(s=!0,l.tag==="FnCall"&&T(l,":=")){let u=l.args[1];if(u&&u.tag==="FnCall"&&Nr(u)){let c=u.args[0];if(c){let f=B(c,n,r);i.emitLine(`${n}// Store Future for await ${t.index} (cond branch)`),i.emitLine(`${n}sm->await_future_${t.index} = ${f};`)}}}else if(l.tag==="FnCall"&&Nr(l)){let u=l.args[0];if(u)if(t.futureVariableId===void 0){let c=B(u,n,r);i.emitLine(`${n}// Store Future for await ${t.index} (cond branch)`),i.emitLine(`${n}sm->await_future_${t.index} = ${c};`)}else i.emitLine(`${n}// Await will use Future from sm->var_${t.futureVariableId}`)}else if(l.tag==="FnCall"&&T(l,D.cond)){let u=l===a[a.length-1],c=r.asyncBodyReturnExpr;u&&r.asyncBodyReturnExpr!==void 0&&(r.asyncBodyReturnExpr=l),Gs(l,t,n,r),r.asyncBodyReturnExpr=c}else if(l.tag==="FnCall"&&T(l,D.match)){let u=l===a[a.length-1],c=r.asyncBodyReturnExpr;u&&r.asyncBodyReturnExpr!==void 0&&(r.asyncBodyReturnExpr=l),Ws(l,t,n,r),r.asyncBodyReturnExpr=c}else l.tag==="FnCall"&&T(l,D.while)&&Wc(l,t,n,r);else{let u=B(l,n,r);u&&l.$&&!en(l.$.env.modulePath,u)&&i.emitLine(`${n}${u};`)}}return o}function Wc(e,t,n,r){let i=r.emitter;if(e.tag!=="FnCall"||!T(e,"while")){i.emitLine(`${n}// Error: Expected while expression`);return}let o=e.args;if(o.length!==2){i.emitLine(`${n}// Error: while must have exactly 2 arguments (condition, body)`);return}let a=o[0],s=o[1],l=s$(s),u;l?(u=r.asyncNextWhileLoopIndex??t.index+1,r.asyncNextWhileLoopIndex=u+1):u=t.index,i.emitLine(`${n}sm->while_loop_${u}_active = true;`),i.emitLine(`${n}while_loop_${u}_start:`);let c=B(a,n,r);i.emitLine(`${n}if (!(${c})) {`),i.emitLine(`${n} sm->while_loop_${u}_active = false;`),i.emitLine(`${n} goto while_loop_${u}_end;`),i.emitLine(`${n}}`);let f=a$(s,t,n,r,u);if(i.emitLine(`${n}while_loop_${u}_end:`),r.asyncWhileLoopInfo||(r.asyncWhileLoopInfo=new Map),l){let p=r.asyncWhileLoopInfo.get(t.index);p&&(p.outerWhileLoop={whileLoopIndex:u,conditionExpr:a,bodyExpr:s,bodyExprsAfterAwait:f})}else r.asyncWhileLoopInfo.set(t.index,{conditionExpr:a,bodyExpr:s,bodyExprsAfterAwait:f})}function a$(e,t,n,r,i){var _;let o=r.emitter,a=[],s=[];e.tag==="FnCall"&&T(e,"begin")?s=e.args:s=[e];let l=-1;for(let d=0;d<s.length;d++){let g=s[d];if(mr(g)){l=d;break}}if(l===-1)return o.emitLine(`${n}// Error: Expected await in while loop body but none found`),a;let u=r.smWhileBreakInfo,c=r.smWhileContinueInfo,f=r.smWhileBodyDrops;r.smWhileBreakInfo={label:`while_loop_${i}_end`,activeIndex:i},r.smWhileContinueInfo={label:`while_loop_${i}_start`,emitDropsBeforeGoto:!0},r.smWhileBodyDrops=[...((_=e.$)==null?void 0:_.deferredDropExpressions)??[]];for(let d=0;d<l;d++){let g=s[d],y=B(g,n,r);y&&g.$&&!en(g.$.env.modulePath,y)&&o.emitLine(`${n}${y};`)}r.smWhileBreakInfo=u,r.smWhileContinueInfo=c,r.smWhileBodyDrops=f;let p=s[l];if(S(p)&&T(p,D.while)&&mr(p)){Wc(p,t,n,r);for(let d=l+1;d<s.length;d++)a.push(s[d]);return a}if(S(p)&&T(p,":=")){let d=p.args[1];if(d&&d.tag==="FnCall"&&Nr(d)){let g=d.args[0];if(g){let y=B(g,n,r);o.emitLine(`${n}// Store Future for await ${t.index} (while loop body)`),o.emitLine(`${n}sm->await_future_${t.index} = ${y};`)}}}else if(p.tag==="FnCall"&&Nr(p)){let d=p.args[0];if(d&&t.futureVariableId===void 0){let g=B(d,n,r);o.emitLine(`${n}// Store Future for await ${t.index} (while loop body)`),o.emitLine(`${n}sm->await_future_${t.index} = ${g};`)}}else if(S(p)&&T(p,D.cond)){Gs(p,t,n,r,void 0);for(let d=l+1;d<s.length;d++)a.push(s[d]);return a}else if(S(p)&&T(p,D.match)){Ws(p,t,n,r);for(let d=l+1;d<s.length;d++)a.push(s[d]);return a}for(let d=l+1;d<s.length;d++)a.push(s[d]);return a}function s$(e){let t=e.tag==="FnCall"&&T(e,"begin")?e.args:[e];for(let n of t)if(n.tag==="FnCall"&&T(n,D.while)&&mr(n))return!0;return!1}var h_=j(()=>{ft();Jr();ce();Zo();pn();Ae();yn();ge();ea();Ua();fn();d_();zt()});function qc(e,t){if(e.futureVariableId){let n=t.capturedVariables.find(r=>r.id===e.futureVariableId);if(n)return n.kind==="outer"?n.name:`var_${n.id}`}return`await_future_${e.index}`}function qs(e){return!e||!z(e)?!1:e.resolvedConcreteType&&z(e.resolvedConcreteType)&&e.resolvedConcreteType.isExtern?!0:e.requiredTraits.some(t=>yl(t.traitType))}function Ys(e,t){return t==="outer"?`__capture.${ve(e)}`:ve(`var_${e}`)}function T_(e,t,n,r,i,o,a,s){var y,h,v,E,$,C,w,k,b,A,I,N,M,V,O,W,P,G,U,X,re,ee,fe,de,Q,pe,Z;let l=s.emitter,c=Un(o).isFuture.outputType,f=Pe(c);s.asyncCondBranchInfo=new Map,s.asyncWhileLoopInfo=new Map,s.asyncNextWhileLoopIndex=i.awaitPoints.length;let p=m_(e,i.awaitPoints),_=e.tag==="FnCall"&&T(e,"begin")?e.args:[e],d=_.length>0?_[_.length-1]:void 0;l.emitLine(`// Resume function for async block ${t}`),l.emitLine(`void ${r}(${n}* sm) {`),l.emitLine(` ASYNC_DEBUG("${t}_resume: state=%d\\n", sm->state);`),l.emitLine(" switch (sm->state) {");let g=[];for(let me=0;me<p.length;me++){let ke=p[me];if(!ke)continue;let Fe=ke.stateNumber,yt=me===p.length-1;if(l.emitLine(`
194
194
  state_${Fe}:`),l.emitLine(` case ${Fe}: { // State ${Fe}`),l.emitLine(` ASYNC_DEBUG("${t}: Entering state ${Fe}\\n");`),Fe>0&&i.awaitPoints[Fe-1]){let J=i.awaitPoints[Fe-1],ae=qc(J,i);J.isInsideCond&&l.emitLine(` if (sm->${ae} != NULL) {`);let Se=Pe(J.resultType)||z(J.resultType)&&!J.resultType.resolvedConcreteType;if(l.emitLine(" // Check if the awaited Future was aborted"),l.emitLine(` if (sm->${ae}->state == -2) {`),l.emitLine(` __yo_decr_rc((void*)sm->${ae});`),l.emitLine(` sm->${ae} = NULL;`),ei({emitter:l,indent:" ",debugLabel:t}),l.emitLine(" }"),J&&!Se){if(l.emitLine(` // Extract result from await ${Fe-1}`),l.emitLine(` int state_before_read = sm->${ae}->state;`),l.emitLine(` ASYNC_DEBUG("${t}: Reading result from await ${Fe-1}, state=%d\\n", state_before_read);`),ut(J.resultType)){let Re=ti(J.resultType,s);Re?l.emitLine(` sm->await_result_${Fe-1} = ${Re}(sm->${ae}->result);`):(l.emitLine(" /* Warning: No ___dup function found for result type, shallow copy may cause use-after-free */"),l.emitLine(` sm->await_result_${Fe-1} = sm->${ae}->result;`))}else l.emitLine(` sm->await_result_${Fe-1} = sm->${ae}->result;`);if(J.targetVariableId){let Re=Ys(J.targetVariableId,"local");l.emitLine(` sm->${Re} = sm->await_result_${Fe-1};`)}l.emitLine("")}if(!J.futureVariableId){let Re=J.expr;if(Re.tag==="FnCall"){let Xe=Re.args[0],nt=(y=Xe==null?void 0:Xe.$)==null?void 0:y.type;nt&&(z(nt)||ot(nt))&&(l.emitLine(` if (sm->${ae} != NULL) { __yo_decr_rc((void*)sm->${ae}); sm->${ae} = NULL; }`),l.emitLine(""))}}let De=s;if(J){let Re=(h=De.asyncCondBranchInfo)==null?void 0:h.get(J.index);if(Re&&Re.branches.some(nt=>nt.hasAwait)){let nt=Re.condBranchFieldIndex??J.index,Wt=nt===-1;l.emitLine(" // Execute remaining code from chosen cond branch"),Wt||l.emitLine(` switch (sm->cond_branch_${nt}) {`);let ar=((v=ke.awaitPoint)==null?void 0:v.isInsideCond)??!1;for(let Tt of Re.branches)if(Tt.hasAwait){if(Wt||l.emitLine(` case ${Tt.index}: {`),l.emitLine(` ASYNC_DEBUG("${t}: Executing remaining code from branch ${Tt.index}\\n");`),Tt.remainingExprs&&Tt.remainingExprs.length>0){let sn=s.inAsyncStateMachine,Dr=s.stateMachineVariables,kt=s.variableIdRemapping,hn=s.pendingDeferredDrops;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping;let vn=(E=De.asyncWhileLoopInfo)==null?void 0:E.get(J.index);s.pendingDeferredDrops=[...Tt.deferredDropExpressions??[],...(($=vn==null?void 0:vn.bodyExpr.$)==null?void 0:$.deferredDropExpressions)??[],...((C=e.$)==null?void 0:C.deferredDropExpressions)??[]];let Bn=new Map;for(let we of i.capturedVariables)Bn.set(we.id,we);if(a)for(let we of a.fields)Bn.set(we.label,{id:we.label,name:we.label,type:we.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=Bn;let kn=!1,Te=[],be=Re.targetAssignmentCode;for(let we=0;we<Tt.remainingExprs.length;we++){let he=Tt.remainingExprs[we],Ce=we===Tt.remainingExprs.length-1;if(kn){Te.push(he);continue}if(ar&&mr(he)){kn=!0,Yc(he,ke.awaitPoint,i," ",s);continue}let Me=B(he," ",s);!Me||!he.$||en(he.$.env.modulePath,Me)||(Ce&&be?l.emitLine(` ${be} = ${Me};`):l.emitLine(` ${Me};`))}if(Tt.remainingExprs.length===0&&be&&l.emitLine(` ${be} = sm->await_result_${J.index};`),kn&&ke.awaitPoint){let we=ke.awaitPoint.index;De.asyncCondBranchInfo||(De.asyncCondBranchInfo=new Map);let he=De.asyncCondBranchInfo.get(we);if(he)he.chainedBranches||(he.chainedBranches=[]),he.chainedBranches.push({branches:[{index:Tt.index,value:Tt.value,hasAwait:Te.length>0||Te.some(Ce=>mr(Ce)),remainingExprs:Te,deferredDropExpressions:Tt.deferredDropExpressions}],condBranchFieldIndex:nt});else{let Ce={branches:[{index:Tt.index,value:Tt.value,hasAwait:Te.length>0||Te.some(Me=>mr(Me)),remainingExprs:Te,deferredDropExpressions:Tt.deferredDropExpressions}],condBranchFieldIndex:nt};De.asyncCondBranchInfo.set(we,Ce)}}else if(Tt.deferredDropExpressions)for(let we of Tt.deferredDropExpressions){let he=B(we," ",s);he&&he.includes("sm->")&&l.emitLine(` ${he};`)}s.inAsyncStateMachine=sn,s.stateMachineVariables=Dr,s.variableIdRemapping=kt,s.pendingDeferredDrops=hn}Wt||(l.emitLine(" break;"),l.emitLine(" }"))}if(Wt||l.emitLine(" }"),Re.chainedBranches){for(let Tt of Re.chainedBranches)for(let sn of Tt.branches)if(sn.hasAwait&&sn.remainingExprs&&sn.remainingExprs.length>0){let Dr=s.inAsyncStateMachine,kt=s.stateMachineVariables,hn=s.variableIdRemapping,vn=s.pendingDeferredDrops;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping;let Bn=(w=De.asyncWhileLoopInfo)==null?void 0:w.get(J.index);s.pendingDeferredDrops=[...sn.deferredDropExpressions??[],...((k=Bn==null?void 0:Bn.bodyExpr.$)==null?void 0:k.deferredDropExpressions)??[],...((b=e.$)==null?void 0:b.deferredDropExpressions)??[]];let kn=new Map;for(let he of i.capturedVariables)kn.set(he.id,he);if(a)for(let he of a.fields)kn.set(he.label,{id:he.label,name:he.label,type:he.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=kn;let Te=((A=ke.awaitPoint)==null?void 0:A.isInsideCond)??!1,be=!1,we=[];for(let he of sn.remainingExprs){if(be){we.push(he);continue}if(Te&&mr(he)){be=!0,Yc(he,ke.awaitPoint,i," ",s);continue}let Ce=B(he," ",s);!Ce||!he.$||en(he.$.env.modulePath,Ce)||l.emitLine(` ${Ce};`)}if(be&&ke.awaitPoint){let he=ke.awaitPoint.index;De.asyncCondBranchInfo||(De.asyncCondBranchInfo=new Map);let Ce=De.asyncCondBranchInfo.get(he);Ce?(Ce.chainedBranches||(Ce.chainedBranches=[]),Ce.chainedBranches.push({branches:[{index:sn.index,value:sn.value,hasAwait:we.length>0||we.some(Me=>mr(Me)),remainingExprs:we,deferredDropExpressions:sn.deferredDropExpressions}],condBranchFieldIndex:Tt.condBranchFieldIndex})):De.asyncCondBranchInfo.set(he,{branches:[{index:sn.index,value:sn.value,hasAwait:we.length>0||we.some(Me=>mr(Me)),remainingExprs:we,deferredDropExpressions:sn.deferredDropExpressions}],condBranchFieldIndex:Tt.condBranchFieldIndex})}else if(sn.deferredDropExpressions)for(let he of sn.deferredDropExpressions){let Ce=B(he," ",s);Ce&&Ce.includes("sm->")&&l.emitLine(` ${Ce};`)}s.inAsyncStateMachine=Dr,s.stateMachineVariables=kt,s.variableIdRemapping=hn,s.pendingDeferredDrops=vn}}if(Re.targetVariableId){let Tt=Ys(Re.targetVariableId,"local");l.emitLine(" // Assign cond result to target variable"),l.emitLine(` sm->${Tt} = sm->await_result_${J.index};`)}l.emitLine("")}J.isInsideCond&&l.emitLine(" }");let Xe=(I=De.asyncWhileLoopInfo)==null?void 0:I.get(J.index);if(Xe){if(l.emitLine(" // Execute remaining code from while loop body and continue loop"),l.emitLine(` if (sm->while_loop_${J.index}_active) {`),Xe.bodyExprsAfterAwait&&Xe.bodyExprsAfterAwait.length>0){let kt=s.inAsyncStateMachine,hn=s.stateMachineVariables,vn=s.variableIdRemapping,Bn=s.pendingDeferredDrops;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping,s.pendingDeferredDrops=[...((N=Xe.bodyExpr.$)==null?void 0:N.deferredDropExpressions)??[],...((M=e.$)==null?void 0:M.deferredDropExpressions)??[]];let kn=new Map;for(let he of i.capturedVariables)kn.set(he.id,he);if(a)for(let he of a.fields)kn.set(he.label,{id:he.label,name:he.label,type:he.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=kn;let Te=s.smWhileBreakInfo,be=s.smWhileContinueInfo,we=s.smWhileBodyDrops;s.smWhileBreakInfo={label:`after_while_loop_${J.index}`,activeIndex:J.index},s.smWhileContinueInfo={label:`while_loop_${J.index}_continue`},s.smWhileBodyDrops=[...((V=Xe.bodyExpr.$)==null?void 0:V.deferredDropExpressions)??[]];for(let he of Xe.bodyExprsAfterAwait){let Ce=B(he," ",s);!Ce||!he.$||en(he.$.env.modulePath,Ce)||l.emitLine(` ${Ce};`)}s.smWhileBreakInfo=Te,s.smWhileContinueInfo=be,s.smWhileBodyDrops=we,s.inAsyncStateMachine=kt,s.stateMachineVariables=hn,s.variableIdRemapping=vn,s.pendingDeferredDrops=Bn}l.emitLine(` while_loop_${J.index}_continue:`);{let kt=((O=Xe.bodyExpr.$)==null?void 0:O.deferredDropExpressions)??[];if(kt.length>0){let hn=s.inAsyncStateMachine,vn=s.stateMachineVariables,Bn=s.variableIdRemapping;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping;let kn=new Map;for(let Te of i.capturedVariables)kn.set(Te.id,Te);if(a)for(let Te of a.fields)kn.set(Te.label,{id:Te.label,name:Te.label,type:Te.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=kn;for(let Te of kt){let be=B(Te," ",s);be&&be.includes("sm->")&&l.emitLine(` ${be};`)}s.inAsyncStateMachine=hn,s.stateMachineVariables=vn,s.variableIdRemapping=Bn}}l.emitLine(` ASYNC_DEBUG("${t}: Re-evaluating while loop condition\\n");`);let nt=s.inAsyncStateMachine,Wt=s.stateMachineVariables,ar=s.variableIdRemapping;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping;let Tt=new Map;for(let kt of i.capturedVariables)Tt.set(kt.id,kt);if(a)for(let kt of a.fields)Tt.set(kt.label,{id:kt.label,name:kt.label,type:kt.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=Tt;let sn=B(Xe.conditionExpr," ",s);s.inAsyncStateMachine=nt,s.stateMachineVariables=Wt,s.variableIdRemapping=ar,l.emitLine(` if (!(${sn})) {`),l.emitLine(` sm->while_loop_${J.index}_active = false;`),l.emitLine(` ASYNC_DEBUG("${t}: While loop condition false, exiting loop\\n");`),l.emitLine(" } else {"),l.emitLine(` ASYNC_DEBUG("${t}: While loop condition true, continuing iteration\\n");`);let Dr=J.index;if(l.emitLine(" // Loop back by transitioning to while loop state"),l.emitLine(` sm->state = ${Dr};`),l.emitLine(` goto while_loop_${Dr}_start;`),l.emitLine(" }"),l.emitLine(" }"),l.emitLine(""),l.emitLine(` after_while_loop_${J.index}:`),Xe.condBranchPostWhileExprs){let kt=Xe.condBranchPostWhileExprs,hn=kt.condBranchFieldIndex,vn=kt.branchIndex;kt.skipCondBranchCheck?(l.emitLine(" // Execute post-while-loop code from cond branch (unconditional)"),l.emitLine(" {")):(l.emitLine(" // Execute post-while-loop code from cond branch"),l.emitLine(` if (sm->cond_branch_${hn} == ${vn}) {`));let Bn=s.inAsyncStateMachine,kn=s.stateMachineVariables,Te=s.variableIdRemapping,be=s.pendingDeferredDrops;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping,s.pendingDeferredDrops=[...((W=e.$)==null?void 0:W.deferredDropExpressions)??[]];let we=new Map;for(let pt of i.capturedVariables)we.set(pt.id,pt);if(a)for(let pt of a.fields)we.set(pt.label,{id:pt.label,name:pt.label,type:pt.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=we;let he=ke.awaitPoint!=null,Ce=!1,Me=[];for(let pt=0;pt<kt.exprs.length;pt++){let Oe=kt.exprs[pt];if(Ce){Me.push(Oe);continue}if(he&&mr(Oe)){Ce=!0,Yc(Oe,ke.awaitPoint,i," ",s);continue}let ye=B(Oe," ",s);!ye||!Oe.$||en(Oe.$.env.modulePath,ye)||l.emitLine(` ${ye};`)}if(Ce&&ke.awaitPoint){let pt=ke.awaitPoint.index;De.asyncCondBranchInfo||(De.asyncCondBranchInfo=new Map);let Oe=kt.skipCondBranchCheck?-1:kt.condBranchFieldIndex,ye=De.asyncCondBranchInfo.get(pt);ye?(ye.chainedBranches||(ye.chainedBranches=[]),ye.chainedBranches.push({branches:[{index:kt.branchIndex,value:kt.exprs[0],hasAwait:Me.length>0||Me.some(Ue=>mr(Ue)),remainingExprs:Me,deferredDropExpressions:kt.deferredDropExpressions}],condBranchFieldIndex:Oe})):De.asyncCondBranchInfo.set(pt,{branches:[{index:kt.branchIndex,value:kt.exprs[0],hasAwait:Me.length>0||Me.some(Ue=>mr(Ue)),remainingExprs:Me,deferredDropExpressions:kt.deferredDropExpressions}],condBranchFieldIndex:Oe})}if(!Ce&&kt.deferredDropExpressions)for(let pt of kt.deferredDropExpressions){let Oe=B(pt," ",s);Oe&&Oe.includes("sm->")&&l.emitLine(` ${Oe};`)}l.emitLine(" }"),s.inAsyncStateMachine=Bn,s.stateMachineVariables=kn,s.variableIdRemapping=Te,s.pendingDeferredDrops=be}if(Xe.outerWhileLoop){let kt=Xe.outerWhileLoop,hn=kt.whileLoopIndex;if(l.emitLine(" // Execute remaining code from outer while loop body"),l.emitLine(` if (sm->while_loop_${hn}_active) {`),kt.bodyExprsAfterAwait.length>0){let vn=s.inAsyncStateMachine,Bn=s.stateMachineVariables,kn=s.variableIdRemapping,Te=s.pendingDeferredDrops;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping,s.pendingDeferredDrops=[...((P=kt.bodyExpr.$)==null?void 0:P.deferredDropExpressions)??[],...((G=e.$)==null?void 0:G.deferredDropExpressions)??[]];let be=new Map;for(let Me of i.capturedVariables)be.set(Me.id,Me);if(a)for(let Me of a.fields)be.set(Me.label,{id:Me.label,name:Me.label,type:Me.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=be;let we=s.smWhileBreakInfo,he=s.smWhileContinueInfo,Ce=s.smWhileBodyDrops;s.smWhileBreakInfo={label:`after_while_loop_${hn}`,activeIndex:hn},s.smWhileContinueInfo={label:`while_loop_${hn}_continue`},s.smWhileBodyDrops=[...((U=kt.bodyExpr.$)==null?void 0:U.deferredDropExpressions)??[]];for(let Me of kt.bodyExprsAfterAwait){let pt=B(Me," ",s);!pt||!Me.$||en(Me.$.env.modulePath,pt)||l.emitLine(` ${pt};`)}s.smWhileBreakInfo=we,s.smWhileContinueInfo=he,s.smWhileBodyDrops=Ce,s.inAsyncStateMachine=vn,s.stateMachineVariables=Bn,s.variableIdRemapping=kn,s.pendingDeferredDrops=Te}l.emitLine(` while_loop_${hn}_continue:`);{let vn=((X=kt.bodyExpr.$)==null?void 0:X.deferredDropExpressions)??[];if(vn.length>0){let Bn=s.inAsyncStateMachine,kn=s.stateMachineVariables,Te=s.variableIdRemapping;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping;let be=new Map;for(let we of i.capturedVariables)be.set(we.id,we);if(a)for(let we of a.fields)be.set(we.label,{id:we.label,name:we.label,type:we.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=be;for(let we of vn){let he=B(we," ",s);he&&he.includes("sm->")&&l.emitLine(` ${he};`)}s.inAsyncStateMachine=Bn,s.stateMachineVariables=kn,s.variableIdRemapping=Te}}{let vn=s.inAsyncStateMachine,Bn=s.stateMachineVariables,kn=s.variableIdRemapping;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping;let Te=new Map;for(let we of i.capturedVariables)Te.set(we.id,we);if(a)for(let we of a.fields)Te.set(we.label,{id:we.label,name:we.label,type:we.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=Te;let be=B(kt.conditionExpr," ",s);s.inAsyncStateMachine=vn,s.stateMachineVariables=Bn,s.variableIdRemapping=kn,l.emitLine(` if (!(${be})) {`),l.emitLine(` sm->while_loop_${hn}_active = false;`),l.emitLine(" } else {"),l.emitLine(` sm->state = ${J.index};`),l.emitLine(` goto while_loop_${hn}_start;`),l.emitLine(" }")}l.emitLine(" }"),l.emitLine(""),l.emitLine(` after_while_loop_${hn}:`)}}}}let le=s.inAsyncStateMachine,Ee=s.stateMachineVariables,ne=s.variableIdRemapping;s.inAsyncStateMachine={futureType:o},s.variableIdRemapping=i.variableIdRemapping;let Ie=new Map;for(let J of i.capturedVariables)Ie.set(J.id,J);if(a)for(let J of a.fields)Ie.set(J.label,{id:J.label,name:J.label,type:J.type,kind:"outer",isOwningTheSameRcValueAs:void 0});s.stateMachineVariables=Ie;let je=s.pendingDeferredDrops;s.pendingDeferredDrops=[...((re=e.$)==null?void 0:re.deferredDropExpressions)??[]];let it=yt&&!f&&ke.expressions.length>0,Mt=ke.expressions.length>0?ke.expressions[ke.expressions.length-1]:void 0,K=s.asyncBodyReturnExpr;if(!f&&Mt&&d&&Mt===d&&ke.awaitPoint?s.asyncBodyReturnExpr=Mt:s.asyncBodyReturnExpr=void 0,y_(ke," ",s,it),s.asyncBodyReturnExpr=K,s.pendingDeferredDrops=je,l.emitLine(""),ke.awaitPoint){s.inAsyncStateMachine=le,s.stateMachineVariables=Ee,s.variableIdRemapping=ne;let J=Fe+1;{let ae=qc(ke.awaitPoint,i),De=(ee=ke.awaitPoint.expr.args)==null?void 0:ee[0],Re=qs((fe=De==null?void 0:De.$)==null?void 0:fe.type),Xe=(de=ke.awaitPoint)==null?void 0:de.isInsideCond;Xe&&(l.emitLine(" // Only await if the cond branch with await was taken"),l.emitLine(` if (sm->${ae} != NULL) {`));let nt=(Q=ke.awaitPoint)==null?void 0:Q.isInsideWhile,Wt=nt?(pe=s.asyncWhileLoopInfo)==null?void 0:pe.get(ke.awaitPoint.index):void 0;if(nt&&Wt){let ar=ke.awaitPoint.index;l.emitLine(" // Only await if while loop is still active (not broken)"),l.emitLine(` if (sm->while_loop_${ar}_active) {`)}if(l.emitLine(" // Transition to next state after await"),l.emitLine(` sm->state = ${J};`),l.emitLine(""),l.emitLine(" // Check if future is ready"),l.emitLine(` int future_state = sm->${ae}->state;`),l.emitLine(" if (future_state == -1 || future_state == -2) { // -1 = completed, -2 = aborted"),l.emitLine(" // Already complete or aborted \u2014 yield once for fairness"),l.emitLine(" // Yield once to event loop for fairness (microtask yield)"),l.emitLine(` yo_async_spawn_task((void (*)(void*))${r}, (void*)sm);`),l.emitLine(" return;"),l.emitLine(" }"),l.emitLine(""),Re?l.emitLine(" // IO future: no extra ref needed (completion handler does not decr_rc)"):(l.emitLine(" // Future not complete \u2014 take event loop reference and start if cold"),l.emitLine(` __yo_incr_rc((void*)sm->${ae}); // event loop reference`)),Re||(l.emitLine(" if (future_state == 0) { // 0 = cold (not started)"),u$(ke.awaitPoint.expr,`sm->${ae}`," ",s),l.emitLine(" // Cold future \u2014 start it via stored resume function pointer"),l.emitLine(` sm->${ae}->__yo_resume_fn((void*)sm->${ae});`),l.emitLine(""),l.emitLine(" // Re-check: may have completed synchronously"),l.emitLine(` future_state = sm->${ae}->state;`),l.emitLine(" if (future_state == -1 || future_state == -2) {"),l.emitLine(" // Completed or aborted synchronously \u2014 yield for fairness"),l.emitLine(` yo_async_spawn_task((void (*)(void*))${r}, (void*)sm);`),l.emitLine(" return;"),l.emitLine(" }"),l.emitLine(" }")),l.emitLine(""),l.emitLine(" // Still pending \u2014 register continuation and suspend"),l.emitLine(` sm->${ae}->continuation_fn = (void (*)(void*))${r};`),l.emitLine(` sm->${ae}->continuation_sm = (void*)sm;`),l.emitLine(" return;"),nt&&Wt){let ar=ke.awaitPoint.index;l.emitLine(" } else {"),l.emitLine(" // While loop was broken, jump to code after loop"),l.emitLine(` goto after_while_loop_${ar};`),l.emitLine(" }")}Xe&&(l.emitLine(" } else {"),l.emitLine(" // Non-await cond branch was taken, skip directly to next state"),l.emitLine(` sm->state = ${J};`),l.emitLine(` goto state_${J};`),l.emitLine(" }"))}}else if(yt){if(!ke.expressions.some(ae=>E_(ae))){if((Z=e.$)!=null&&Z.deferredDropExpressions){let ae=new pa,Se=s.emitter;s.emitter=ae;for(let Re of e.$.deferredDropExpressions){let Xe=B(Re,"",s);Xe&&ae.emitLine(`${Xe};`)}s.emitter=Se;let De=ae.print().trim();if(De){l.emitLine(" // Drop local variables before completion");for(let Re of De.split(`
195
- `)){let Xe=Re.trim();Xe&&(l.emitLine(` ${Xe}`),g.push(Xe))}l.emitLine("")}}l.emitLine(" // Final state - complete the Future"),Ji({emitter:l,indent:" ",debugLabel:"Future %p completed"})}s.inAsyncStateMachine=le,s.stateMachineVariables=Ee,s.variableIdRemapping=ne}else s.inAsyncStateMachine=le,s.stateMachineVariables=Ee,s.variableIdRemapping=ne;l.emitLine(" }")}return l.emitLine(" }"),l.emitLine("}"),l.emitLine(""),g}function Yc(e,t,n,r,i){let o=i.emitter,a=qc(t,n);if(e.tag==="FnCall"&&T(e,":=")){let s=e.args[1];if(s&&s.tag==="FnCall"&&Nr(s)){let l=s.args[0];if(l){let u=B(l,r,i);o.emitLine(`${r}// Store Future for additional await in cond branch`),o.emitLine(`${r}sm->${a} = ${u};`)}}return}if(e.tag==="FnCall"&&Nr(e)){let s=e.args[0];if(s){let l=B(s,r,i);o.emitLine(`${r}// Store Future for additional await in cond branch`),o.emitLine(`${r}sm->${a} = ${l};`)}return}if(e.tag==="FnCall"&&T(e,D.cond)){Ya(e,t,0,r,i);return}if(e.tag==="FnCall"&&T(e,D.match)){Ya(e,t,0,r,i);return}if(e.tag==="FnCall"&&T(e,D.while)){Ya(e,t,0,r,i);return}if(e.tag==="FnCall"&&T(e,D.begin)){Ya(e,t,0,r,i);return}o.emitLine(`${r}// Warning: unhandled await pattern in remaining expressions`)}function E_(e){if($n(e,"return")||T(e,"return"))return!0;if(e.tag==="FnCall"){for(let t of e.args)if(E_(t))return!0}return!1}function l$(e){let t=[];for(let n of e)if(n.isEffectRowSpread){let r=n.type;z(r)&&r.resolvedConcreteType&&(r=r.resolvedConcreteType),Xt(r)&&t.push(...r.implicitParameters)}else t.push(n);return t}function u$(e,t,n,r){var u,c,f,p,_;let i=(u=e.args)==null?void 0:u[0];if(!((c=i==null?void 0:i.$)!=null&&c.type))return;let o=Un(i.$.type);if(!((f=o==null?void 0:o.isFuture.effects)!=null&&f.length))return;let a=l$(o.isFuture.effects),s=r.emitter,l=(p=e.args)==null?void 0:p.find(d=>S(d)&&T(d,D.using));if(l){let d=l.args;for(let g=0;g<a.length&&g<d.length;g++){let y=a[g],h=d[g];if(te(y.type)){if(y.type.forallParameters.length>0)continue;let v=B(h,n,r),E=y.label;s.emitLine(`${n}${t}->__capture.${E} = (void*)${v};`)}else Qe(y.type)&&v_(y.type,t,n,(_=h.$)==null?void 0:_.value,r,e)}}else for(let d of a)if(te(d.type)){if(d.type.forallParameters.length>0)continue;let g=c$(d.label,r,e);g&&s.emitLine(`${n}${t}->__capture.${d.label} = (void*)${g};`)}else Qe(d.type)&&v_(d.type,t,n,void 0,r,e)}function v_(e,t,n,r,i,o){var s,l,u,c;let a=i.emitter;for(let f of e.fields){if(!te(f.type))continue;let p;if(i.stateMachineVariables){for(let[,_]of i.stateMachineVariables)if(_.name===f.label&&_.kind==="outer"){p=`sm->__capture.${f.label}`;break}}if(!p&&r&&At(r)){let _=e.fields.indexOf(f),d=r.fields[_];if(d&&$e(d)){let g=i.functions[d.funcId];g&&(p=g.cName)}}if(!p&&i.currentEvidenceParams){for(let _ of i.currentEvidenceParams.values())if(_.fieldLabel===f.label){p=_.cParamName;break}}if(!p){let _=((s=o.$)==null?void 0:s.env)??((l=o.func.$)==null?void 0:l.env);if(_){let d=hr(_,g=>g.isImplicit===!0);for(let g=d.length-1;g>=0;g--){let y=d[g],h=(u=y.value)==null?void 0:u[y.value.length-1];if(h&&At(h)){let v=h.type.fields.findIndex(E=>E.label===f.label);if(v>=0){let E=h.fields[v];if(E&&$e(E)){let $=(c=i.functions[E.funcId])==null?void 0:c.cName;if($){p=$;break}}}}}}}p&&a.emitLine(`${n}${t}->__capture.${f.label} = (void*)${p};`)}}function c$(e,t,n){if(t.currentEvidenceParams){for(let r of t.currentEvidenceParams.values())if(r.fieldLabel===e)return r.cParamName}if(t.stateMachineVariables){for(let[,r]of t.stateMachineVariables)if(r.name===e&&r.kind==="outer")return`sm->__capture.${e}`}}var Cu=j(()=>{dc();ft();Jr();Gt();ce();Zo();Ae();Je();yn();ge();ea();vr();fn();zt();h_()});function $_(e){var n,r,i,o,a;let t=e.emitter;t.emitDeclarationLine("// Function declarations"),t.emitDeclarationLine("/// Extern functions");for(let s in e.externFunctions){let{cName:l,type:u}=e.externFunctions[s];if(u.isExtern==="yo"){if(f$.has(l))continue;Hc(u,l,!0,e);continue}u.isExtern==="c"&&u.cInclude||l.startsWith("__atomic_")||l.startsWith("__sync_")||Hc(u,l,!0,e)}t.emitDeclarationLine(""),t.emitDeclarationLine("/// Async runtime functions"),t.emitDeclarationLine("void yo_async_spawn_task(void (*resume_fn)(void*), void* state_machine);"),t.emitDeclarationLine("void yo_future_dispose(void* ptr);"),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Object constructors"),_$(e),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Closure constructors"),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Capture dispose functions"),d$(e),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Dyn type constructors"),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Regular functions");for(let s in e.functions){let{cName:l,value:u}=e.functions[s],c=l==="__yo_user_main",f=(r=(n=u.body)==null?void 0:n.$)==null?void 0:r.effectAnalysis,p=f&&f.hasEffects;if(!c&&!u.type.isClosure&&((i=u.specializedFunctionCaches)==null?void 0:i.length)>0||!c&&!p&&!u.isModuleEffectMember&&!u.type.isClosure&&!u.specializedType&&(((o=u.specializedFunctionCaches)==null?void 0:o.length)??0)===0&&An(u.specializedType??u.type).length===0&&[...u.type.implicitParameters,...u.type.parameters.filter($=>$.isImplicit)].some($=>te($.type)))continue;let d=u.specializedType??u.type,g=An(d).length>0;if(!c&&u.isIoAsyncStateMachineClosure||!c&&!p&&!g&&!u.isModuleEffectMember&&(ki(u.type)&&!u.type.isClosure||((a=u.specializedFunctionCaches)==null?void 0:a.length)>0&&!u.type.isClosure||bo(u)||Ra(u)||u.isIoAsyncStateMachineClosure))continue;let y=u.specializedType??u.type,h=!p&&!u.isModuleEffectMember&&(y.parameters.some($=>lt($.type))||y.forallParameters.length>0),v=lt(y.return.type),E=z(y.return.type)&&y.return.type.requiredTraits.length>0;h||v&&!E&&!u.isModuleEffectMember||Hc(y,l,!1,e,u.isModuleEffectMember?void 0:u.body,u.specializedType&&An(y).length===0&&An(u.type).some($=>$.fieldFunctionType.forallParameters&&$.fieldFunctionType.forallParameters.length>0)?u.type:void 0)}t.emitDeclarationLine("/// Closure vtable instances"),t.emitDeclarationLine("")}function An(e){let t=[],n=p$(e.implicitParameters);for(let r of n)Qe(r.type)?b_(r.label,r.type,[],t):te(r.type)&&t.push({implicitLabel:r.label,fieldLabel:r.label,fieldPath:[r.label],fieldFunctionType:r.type,cParamName:ve(r.label)});return t}function b_(e,t,n,r){for(let i of t.fields)if(te(i.type)){let o=[...n,i.label],a=o.join("__");r.push({implicitLabel:e,fieldLabel:a,fieldPath:o,fieldFunctionType:i.type,cParamName:ve(`${e}__${a}`)})}else Qe(i.type)&&b_(e,i.type,[...n,i.label],r)}function p$(e){let t=[];for(let n of e)if(n.isEffectRowSpread){let r=n.type;z(r)&&r.resolvedConcreteType&&(r=r.resolvedConcreteType),Xt(r)&&t.push(...r.implicitParameters)}else t.push(n);return t}function Ri(e,t,n,r,i){let o=r||q(e.return.type,n),a=e.parameters.filter(f=>!f.isCompileTimeOnly),s=[];e.isClosure&&s.push("void* closure_context");let l=a.map((f,p)=>{let _=ve(f.label||`param${p}`);if(te(f.type))return Ri(f.type,"(*)",n).replace(" (*)(",` (*${_})(`);{let d;return z(f.type)&&rt(f.type)?f.type.resolvedConcreteType?d=q(f.type.resolvedConcreteType,n)+"*":d=q(f.type,n):d=q(f.type,n),`${d} ${_}`}});s.push(...l);let u=An(i??e);for(let f of u)if(f.fieldFunctionType.forallParameters&&f.fieldFunctionType.forallParameters.length>0)s.push(`void* ${f.cParamName}`);else{let p=Ri(f.fieldFunctionType,"(*)",n).replace(" (*)(",` (*${f.cParamName})(`);s.push(p)}let c=s.join(", ");return`${o} ${t}(${c})`}function Hc(e,t,n,r,i,o){var u,c,f,p;let a;if(i&&rt(e.return.type)){let _=Bs(i);(u=_==null?void 0:_.$)!=null&&u.asyncStateMachineStructName?a=`${_.$.asyncStateMachineStructName}*`:(c=i.$)!=null&&c.type&&z(i.$.type)&&rt(i.$.type)&&(a=q(i.$.type,r))}if(i&&z(e.return.type)&&!rt(e.return.type)&&(f=i.$)!=null&&f.type&&(a=q(i.$.type,r)),!a&&i&&((p=i.$)!=null&&p.type)&&!rt(e.return.type)){let _=q(e.return.type,r),d=q(i.$.type,r);_!==d&&(a=d)}let s=a?Ri(e,t,r,a,o):Ri(e,t,r,void 0,o),l=x(e);r.emitter.emitDeclarationLine(`${n?"extern ":""}${s}; // ${l}`)}function _$(e){let t=e.emitter;t.emitDeclarationLine("void __yo_decr_rc(void* ptr); // Decrement reference count"),t.emitDeclarationLine("void* __yo_incr_rc(void* ptr); // Increment reference count"),t.emitDeclarationLine("void __yo_gc_register(void* ptr); // Register object for cycle detection"),t.emitDeclarationLine("void __yo_gc_unregister(void* ptr); // Unregister object from cycle detection"),t.emitDeclarationLine("void __yo_gc_collect(); // Trigger garbage collection"),t.emitDeclarationLine("void __yo_gc_init_thread(); // Initialize thread-local GC state (for worker threads)"),t.emitDeclarationLine("void __yo_cleanup_thread_gc(); // Clean up thread-local GC state"),t.emitDeclarationLine("static void yo_init_process_cleanup(void); // Initialize process cleanup");for(let n in e.types){let{type:r,cName:i}=e.types[n];if(ze(r)&&r.isReferenceSemantics){if(r.fields.some(l=>lt(l.type)))continue;let a=`__yo_new_${i}`,s=r.fields.map(l=>{let u=q(l.type,e),c=ve(l.label);return`${u} ${c}`}).join(", ");t.emitDeclarationLine(`${i}* ${a}(${s}); // Constructor`)}}}function d$(e){let t=e.emitter;if(e.closureCaptureMap&&e.closureCaptureMap.size>0)for(let[n]of e.closureCaptureMap){let r=`__yo_dispose_closure_${n}`;t.emitDeclarationLine(`void ${r}(void* closure_ptr);`)}}function C_(e){let t=new Set;for(let n in e.functions){let{value:r,cName:i}=e.functions[n],o=r.specializedType;if(bo(r)||!o||!ii(r.type)||ii(o))continue;let a=o.parameters.some(u=>lt(u.type)),s=lt(o.return.type);a||s||An(r.type).some(u=>u.fieldFunctionType.forallParameters&&u.fieldFunctionType.forallParameters.length>0)||t.has(n)||(t.add(n),e.emitter.emitDeclarationLine(`${Ri(o,i,e)}; // specialized function: ${x(r.type)}`))}}var f$,qa=j(()=>{Gt();Ae();Je();zt();f$=new Set(["yo_mutex_init","yo_mutex_destroy","yo_mutex_lock","yo_mutex_unlock","yo_cond_init","yo_cond_destroy","yo_cond_wait","yo_cond_signal","yo_cond_broadcast","yo_thread_create","yo_thread_join","yo_thread_self"])});function Pi(e,t,n){let r=ue(t,e);return r.length===0?!1:r[r.length-1].frameLevel<=n}function k_(e){var t,n;return!!((t=e.$)!=null&&t.closureFunctionValue&&((n=e.$)!=null&&n.type)&&Qn(e.$.type))}function m$(e,t,n,r,i,o=!1){var _;let a=Object.values(i.types).find(d=>d.type===e);if(!a)return i.emitter.emitLine(`${r}/* Error: Capture type not found for closure */`),null;let s=a.cName,l=new Map;if((_=n.$)!=null&&_.deferredDupExpressions)for(let d of n.$.deferredDupExpressions){let g=bu(d);g&&l.set(g,d)}let u=e.fields.map(d=>{var v,E;if(d.isEffectParam)return"NULL";let g,y=d.exprs.expr;if((E=(v=y.$)==null?void 0:v.deferredDupExpressions)!=null&&E.length&&(g=y.$.deferredDupExpressions[0]),!g){let $=[d.label];H(y)&&$.push(y.token.value);for(let C of $){let w=l.get(C);if(w){g=w;break}}}if(g)return B(g,r,i);let h={tag:"Atom",token:y.token,$:y.$};return B(h,r,i)}),c=`(${s}){ ${u.map((d,g)=>{let y=e.fields[g];return y?`.${y.label} = ${d}`:`/* Error: missing field at index ${g} */`}).join(", ")} }`,f=n.token.position.row!==void 0?`${Date.now()}_${n.token.position.row}`:`${Date.now()}_${Math.random().toString(36).substr(2,9)}`,p=`__capture_${t}_${f}`;return o?i.emitter.emitLine(`${r}${s} ${p} = ${c};`):(i.emitter.emitLine(`${r}${s}* ${p} = (${s}*)__yo_malloc(sizeof(${s}));`),i.emitter.emitLine(`${r}*${p} = ${c};`)),{captureTempVar:p,captureCName:s}}function w_(e,t,n){var d;if(!e.$||!e.$.type||!e.$.closureFunctionValue)return"// Error: Missing closure metadata";let r=or(e.$.type),i=r.isFn.callType,o=e.$.closureFunctionValue,a=e.$.captureType,s=(d=n.functions[o.funcId])==null?void 0:d.cName;if(!s)return"// Error: Closure implementation function not found in context";let l=ot(e.$.type),u;if(l){let g=n.types[e.$.type.id];if(!g)return"// Error: Dyn closure type not found in context";u=g.cName}let c=a&&ze(a)&&a.fields.length>0,f=q(i.return.type,n),p=i.parameters.map(g=>q(g.type,n)).join(", "),_=`(${f} (*)(void*${p?", "+p:""}))${s}`;if(c&&a&&ze(a)){let g=!l,y=m$(a,i.id,e,t,n,g);if(!y)return"// Error: Failed to allocate closure capture";let{captureTempVar:h}=y;if(l){let v=`__yo_create_${u}`,E=`__yo_dispose_${u}`;return`${v}(${h}, ${E}, ${_})`}else return n.implClosureCallMap.set(a.id,{functionCName:s,callTypeId:r.isFn.callType.id}),h}else if(l){let g=`__yo_create_${u}`,y=`__yo_dispose_${u}`;return`${g}(NULL, ${y}, ${_})`}else{if(e.$.type.tag==="SomeType"){let g=e.$.type;if(g.resolvedConcreteType)return n.implClosureCallMap.set(g.resolvedConcreteType.id,{functionCName:s,callTypeId:r.isFn.callType.id}),`(${q(g.resolvedConcreteType,n)}){}`}return"// Error: Impl(Fn(...)) without captures missing resolvedConcreteType"}}var Hs=j(()=>{ft();Gt();ce();Ae();Mr();zt();fn()});function jc(e,t,n){if(e.pendingDeferredDrops&&e.loopBodyDropsBaselineCount!==void 0){let r=e.loopBodyDropsBaselineCount,i=e.pendingDeferredDrops.length,o=e.pendingDeferredDrops.slice(0,i-r);for(let a of o){let s=B(a,t,n);s&&n.emitter.emitLine(`${t}${s};`)}}}function Ha(e,t,n=""){var a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k,b,A,I,N,M,V,O,W,P;let r=t;if(e.token.value==="continue"){if(r.currentContinueLabel)return jc(r,n,t),`goto ${r.currentContinueLabel}`;if(r.currentLoopLabel)return jc(r,n,t),"continue";if(r.smWhileContinueInfo){if(r.smWhileContinueInfo.emitDropsBeforeGoto&&r.smWhileBodyDrops&&r.smWhileBodyDrops.length>0){let G=t.emitter;for(let U of r.smWhileBodyDrops){let X=B(U,n,t);X&&X.includes("sm->")&&G.emitLine(`${n}${X};`)}}if(r.smWhileContinueInfo.stepExpr){let G=t.emitter,U=B(r.smWhileContinueInfo.stepExpr,n,t);U&&G.emitLine(`${n}${U};`)}return`goto ${r.smWhileContinueInfo.label}`}return"continue"}if(e.token.value==="break"){if(r.currentLoopLabel)return jc(r,n,t),r.insideMatch?`goto ${r.currentLoopLabel}`:"break";if(r.smWhileBreakInfo){let{label:G,activeIndex:U}=r.smWhileBreakInfo;if(r.smWhileBodyDrops&&r.smWhileBodyDrops.length>0){let X=t.emitter;for(let re of r.smWhileBodyDrops){let ee=B(re,n,t);ee&&ee.includes("sm->")&&X.emitLine(`${n}${ee};`)}}return U!==void 0?(t.emitter.emitLine(`${n}sm->while_loop_${U}_active = false;`),`goto ${G}`):`goto ${G}`}return"break"}if(e.token.value==="return"){if(r.inAsyncStateMachine){let G=t.emitter,U=r.inAsyncStateMachine.futureType,re=Un(U).isFuture.outputType,ee=Pe(re);if((a=e.$)!=null&&a.deferredDropExpressions)for(let de of e.$.deferredDropExpressions){let Q=B(de,n,t);Q&&Q.includes("sm->")&&G.emitLine(`${n}${Q};`)}if(r.pendingDeferredDrops&&r.pendingDeferredDrops.length>0){G.emitLine(`${n}// Drop local variables before early completion`);for(let de of r.pendingDeferredDrops){let Q=B(de,n,t);Q&&Q.includes("sm->")&&G.emitLine(`${n}${Q};`)}}G.emitLine(`${n}// Early return - complete the result Future`);let fe=ee?void 0:`(${q(re,t)}){0}`;return Ji({emitter:G,indent:n,resultCode:fe,debugLabel:t.currentFunctionName}),""}return"return"}if((s=e.$)!=null&&s.type&&Pe(e.$.type))return"";if((r.inAsyncStateMachine||r.inEffectStateMachine)&&r.stateMachineVariables){let G=e.token.value;if((l=r.localShadowedVariables)!=null&&l.has(G))return ve(G);let U=!1;if((u=e.$)!=null&&u.env){let X=ue(e.$.env,G);if(X.length>0){let re=X[X.length-1],ee=re.isOwningTheSameRcValueAs?re.isOwningTheSameRcValueAs.id:re.id;(c=r.variableIdRemapping)!=null&&c.has(ee)&&(ee=r.variableIdRemapping.get(ee));let fe=r.stateMachineVariables.get(ee);if(fe){let de=fe.kind==="outer"?`__capture.${G}`:`var_${fe.id}`;return U=!0,`sm->${de}`}}}if(!U){for(let[X,re]of r.stateMachineVariables)if(re.name===G){let ee=re.kind==="outer"?`__capture.${G}`:`var_${X}`;return U=!0,`sm->${ee}`}}if((f=e.$)!=null&&f.env){let X=ue(e.$.env,G);if(X.length>0){let re=X[X.length-1];if(re.isOwningTheSameRcValueAs){let ee=re.isOwningTheSameRcValueAs.name,fe=re.isOwningTheSameRcValueAs.id;for(let[de,Q]of r.stateMachineVariables)if(Q.name===ee||de===fe)return`sm->${Q.kind==="outer"?`__capture.${ee}`:`var_${de}`}`}}}if(r.currentClosureCaptures&&r.currentClosureCaptures.includes(G)&&r.currentClosureCaptureFrameLevel!==void 0){let X=r.currentClosureCaptureTypeCName;return X?`((${X}*)closure_context)->${et(G,(p=e.$)==null?void 0:p.env)}`:`closure_context->${et(G,(_=e.$)==null?void 0:_.env)}`}if((d=e.$)!=null&&d.variableName){if((g=e.$)!=null&&g.env&&((y=e.$)!=null&&y.value)&&!Ge(e.$.value)){let X=ue(e.$.env,e.$.variableName);if(X.length>0&&X[X.length-1].isCompileTimeOnly)return Jn(e.$.value,t,e)}return et(e.$.variableName,e.$.env)}}if((h=e.$)!=null&&h.variableName){if((v=e.$)!=null&&v.env&&((E=e.$)!=null&&E.value)&&!Ge(e.$.value)){let G=ue(e.$.env,e.$.variableName);if(G.length>0&&G[G.length-1].isCompileTimeOnly)return Jn(e.$.value,t,e)}if(!(r.currentClosureCaptures&&r.currentClosureCaptures.includes(e.token.value)&&(($=e.$)!=null&&$.env)&&r.currentClosureCaptureFrameLevel!==void 0&&Pi(e.token.value,e.$.env,r.currentClosureCaptureFrameLevel)))return et(e.$.variableName,(C=e.$)==null?void 0:C.env)}if((w=e.$)!=null&&w.value&&!Ge(e.$.value))return Jn(e.$.value,t,e);let i=(k=e.$)!=null&&k.env&&r.currentClosureCaptureFrameLevel!==void 0?Pi(e.token.value,e.$.env,r.currentClosureCaptureFrameLevel):!1;if(r.currentClosureCaptures&&r.currentClosureCaptures.includes(e.token.value)&&r.currentClosureCaptureFrameLevel!==void 0&&(!((b=e.$)!=null&&b.env)||i)){let G=r.currentClosureCaptureTypeCName;return G?`((${G}*)closure_context)->${et(e.token.value,(A=e.$)==null?void 0:A.env)}`:`closure_context->${et(e.token.value,(I=e.$)==null?void 0:I.env)}`}if(r.currentFunctionName&&!r.currentClosureCaptures){let G=Object.values(r.functions).find(U=>U.cName===r.currentFunctionName);if(G&&G.value.type.isClosure){let U=Object.values(r.types).find(X=>te(X.type)&&X.type.isClosure&&X.type===G.value.type);if(U)return`((${`${U.cName}_capture`}*)closure_context->data)->${et(e.token.value,(N=e.$)==null?void 0:N.env)}`}}if((M=e.$)!=null&&M.env){let G=ue(e.$.env,e.token.value);if(G.length>0){let U=G[G.length-1];if((V=U.value)!=null&&V[0]&&$e(U.value[0])){let X=(O=t.functions[U.value[0].funcId])==null?void 0:O.cName;if(X)return X}else if(te(U.type)&&(Ge((W=U.value)==null?void 0:W[0])||U.value===void 0)){let X=Object.entries(t.functions).find(([re,ee])=>ee.value.funcName===e.token.value);if(X)return X[1].cName}}}return et(e.token.value,(P=e.$)==null?void 0:P.env)}var ku=j(()=>{ft();Gt();Ae();ge();zt();ea();Hs();Ua();fn()});function F_(e,t,n){var y,h,v,E,$,C,w,k,b,A,I,N,M;let r;if(qn(e)){let V=(h=(y=e.$)==null?void 0:y.runtimeArgExprsInOrder)==null?void 0:h[0],O=(v=V==null?void 0:V.$)==null?void 0:v.closureFunctionValue;O&&$e(O)&&(r=O.body)}else r=e.args[0];if(!r)return"/* Error: async requires exactly 1 argument */";let i=(E=e.$)==null?void 0:E.type;if(!i||!rt(i))return"/* Error: async block must have Future type */";let o=Un(i);if(!o)return"/* Error: Could not extract Future module type */";let a=(($=e.$)==null?void 0:$.variableName)||`async_block_${Date.now()}`,s=`${a}_state_t`,l=`${a}_resume`,u=`__yo_new_${a}`,c=`${a}_state_dispose`;n.types[i.id]={type:i,cName:s};let f=(C=e.$)==null?void 0:C.awaitAnalysis;if(!f)throw new Error("Missing await analysis for async block. This should have been computed during evaluation.");let p=o.isFuture.outputType,_=q(p,n),d=n.emitter;if(d.emitDeclarationLine(`void ${c}(void* sm_ptr); // Dispose function for state machine`),d.emitDeclarationLine(""),d.emitDeclarationLine(`void ${l}(${s}* sm);`),d.emitDeclarationLine(""),(w=e.$)!=null&&w.captureType){let V=e.$.captureType,O=Object.values(n.types).find(P=>P.type===V),W=O?O.cName:`async_capture_${V.id}`;d.emitDeclarationLine(`${s}* ${u}(${W} __capture);`)}else d.emitDeclarationLine(`${s}* ${u}();`);d.emitDeclarationLine(""),n.deferredAsyncBlocks||(n.deferredAsyncBlocks=[]),n.deferredAsyncBlocks.push({bodyExpr:r,asyncBlockId:a,structName:s,resumeFunctionName:l,constructorName:u,disposeFunctionName:c,futureType:i,futureModuleType:o,resultType:p,resultTypeCName:_,captureType:(k=e.$)==null?void 0:k.captureType,analysis:f});let g=(b=e.$)==null?void 0:b.captureType;if(g){let V=Object.values(n.types).find(fe=>fe.type===g),O=V?V.cName:`async_capture_${g.id}`,W=n,P=W.currentClosureCaptures!==void 0||W.inAsyncStateMachine!==void 0||W.inEffectStateMachine!==void 0,G=!1,U=g.fields.map(fe=>{var pe,Z;if(fe.isEffectParam)return`.${fe.label} = NULL`;let de;if(!P&&((pe=e.$)!=null&&pe.deferredDupExpressions))for(let me of e.$.deferredDupExpressions){let ke;if(S(me)&&(me.args.length>0&&H(me.args[0])?ke=me.args[0].token.value:me.args.length===0&&S(me.func)&&T(me.func,".")&&me.func.args.length>=2&&H(me.func.args[0])&&(ke=me.func.args[0].token.value)),ke===fe.label){de=me;break}}if(de)return G=!0,(Z=de.$)!=null&&Z.variableName?(B(de,t,n),`.${fe.label} = ${de.$.variableName}`):`.${fe.label} = ${B(de,t,n)}`;let Q={tag:"Atom",token:fe.exprs.expr.token,$:fe.exprs.expr.$};return`.${fe.label} = ${Ha(Q,n)}`}).join(", "),X=`(${O}){${U}}`;if(!G){let fe=ti(g,n);fe&&(X=`${fe}(${X})`)}let re=((A=e.$)==null?void 0:A.variableName)||"async_result",ee=`${u}(${X})`;if(re&&((I=e.$)!=null&&I.type)){let fe=Jt(e.$.type,re,n);return n.emitter.emitLine(`${t}${fe} = ${ee};`),re}else return ee}else{let V=((N=e.$)==null?void 0:N.variableName)||"async_result",O=`${u}()`;if(V&&((M=e.$)!=null&&M.type)){let W=Jt(e.$.type,V,n);return n.emitter.emitLine(`${t}${W} = ${O};`),V}else return O}}function L_(e,t){var p;let n=t.emitter,{asyncBlockId:r,structName:i,resultType:o,resultTypeCName:a,captureType:s,analysis:l}=e;if(n.emitDeclarationLine(`// State machine for async block ${r} - implements Future(${x(o)})`),n.emitDeclarationLine(`struct ${i}_struct {`),n.emitDeclarationLine(" yo_ref_header_t header; // Reference counting header (must be first)"),n.emitDeclarationLine(" int state; // Current state (0 = cold, 1..N = intermediate, -1 = completed, -2 = aborted)"),Pe(o)?n.emitDeclarationLine(" uint8_t result; // Dummy result for unit type"):n.emitDeclarationLine(` ${a} result; // The result value of type ${x(o)}`),n.emitDeclarationLine(" void (*continuation_fn)(void*); // Resume function of awaiting task"),n.emitDeclarationLine(" void* continuation_sm; // State machine of awaiting task"),n.emitDeclarationLine(""),n.emitDeclarationLine(" void (*__yo_resume_fn)(void*); // Resume function pointer (for lazy start at await/spawn)"),n.emitDeclarationLine(""),s){let _=Object.values(t.types).find(g=>g.type===s),d=_?_.cName:`async_capture_${s.id}`;n.emitDeclarationLine(" // Captured variables from outer scope"),n.emitDeclarationLine(` ${d} __capture;`),n.emitDeclarationLine("")}let u=l.capturedVariables.filter(_=>_.kind!=="outer");if(u.length>0){n.emitDeclarationLine(" // Local variables");for(let _ of u){let d=q(_.type,t),g=Ys(_.id,"local");n.emitDeclarationLine(` ${d} ${g}; // ${_.name}`)}n.emitDeclarationLine("")}if(l.awaitPoints.length>0){n.emitDeclarationLine(" // Await result temporaries");for(let _ of l.awaitPoints)if(!(Pe(_.resultType)||z(_.resultType)&&!_.resultType.resolvedConcreteType)){let g=_.resultType;if(_.futureType){let h=Un(_.futureType);h&&(g=h.isFuture.outputType)}let y=q(g,t);n.emitDeclarationLine(` ${y} await_result_${_.index};`)}n.emitDeclarationLine("")}if(l.awaitPoints.length>0){let _=l.awaitPoints.filter(d=>d.futureVariableId===void 0);if(_.length>0){n.emitDeclarationLine(" // Future references for awaits");for(let d of _){let g=d.expr;if(g.tag!=="FnCall")continue;let y=g.args[0],h=(p=y==null?void 0:y.$)==null?void 0:p.type;if(!h)throw new Error(`Internal error: await expression missing type info for future argument in async block ${r}`);let v=q(h,t);n.emitDeclarationLine(` ${v} await_future_${d.index};`)}n.emitDeclarationLine("")}}let c=l.awaitPoints.filter(_=>_.needsOwnCondBranchField);if(c.length>0){n.emitDeclarationLine(" // Branch tracking for cond expressions with await");for(let _ of c)n.emitDeclarationLine(` int cond_branch_${_.index}; // Which branch was taken in cond with await ${_.index}`);n.emitDeclarationLine("")}let f=l.awaitPoints.filter(_=>_.isInsideWhile);if(f.length>0){n.emitDeclarationLine(" // Loop state tracking for while loops with await");let _=l.awaitPoints.length;for(let d of f){n.emitDeclarationLine(` _Bool while_loop_${d.index}_active; // Whether while loop ${d.index} should continue`);let g=(d.whileNestingDepth??1)-1;for(let y=0;y<g;y++)n.emitDeclarationLine(` _Bool while_loop_${_}_active; // Whether outer while loop ${_} should continue`),_++}n.emitDeclarationLine("")}n.emitDeclarationLine("};"),n.emitDeclarationLine("")}function y$(e){var l;if(!e.deferredAsyncBlocks||e.deferredAsyncBlocks.length===0)return;let t=e.deferredAsyncBlocks,n=new Map;for(let u of t)n.set(u.structName,u);let r=new Map,i=new Map;for(let u of t)r.set(u.structName,new Set),i.set(u.structName,0);for(let u of t){let c=f=>{let p=r.get(f);p.has(u.structName)||(p.add(u.structName),i.set(u.structName,(i.get(u.structName)??0)+1))};for(let f of u.analysis.capturedVariables){let p;try{p=q(f.type,e)}catch{continue}let _=n.get(p);_&&_.structName!==u.structName&&c(_.structName)}for(let f of u.analysis.awaitPoints){if(f.futureVariableId!==void 0)continue;let p=f.expr;if(p.tag!=="FnCall")continue;let _=p.args[0],d=(l=_==null?void 0:_.$)==null?void 0:l.type;if(!d)continue;let g;try{g=q(d,e)}catch{continue}let y=n.get(g);y&&y.structName!==u.structName&&c(y.structName)}}let o=[];for(let[u,c]of i.entries())c===0&&o.push(u);let a=[];for(;o.length>0;){let u=o.shift();a.push(u);let c=r.get(u);if(c)for(let f of c){let p=(i.get(f)??0)-1;i.set(f,p),p===0&&o.push(f)}}let s=a.length===t.length?a.map(u=>n.get(u)).filter(Boolean):t;for(let u of s)L_({asyncBlockId:u.asyncBlockId,structName:u.structName,resultType:u.resultType,resultTypeCName:u.resultTypeCName,captureType:u.captureType,analysis:u.analysis},e)}function g$(e,t,n,r,i,o,a,s){var u;let l=s.emitter;if(l.emitLine(`// Dispose function for async block ${e} state machine`),l.emitLine("// Called by __yo_decr_rc when refcount hits 0 - do NOT call __yo_free here"),l.emitLine(`void ${n}(void* sm_ptr) {`),l.emitLine(` ${t}* sm = (${t}*)sm_ptr;`),l.emitLine(` ASYNC_DEBUG("${n}: Disposing state machine\\n");`),l.emitLine(""),i&&ut(i)){let c=Object.values(s.types).find(f=>f.type===i);if(!c)l.emitLine(" /* Error: capture struct type not found in context */");else{let f=c.cName,p=i.trait.fields.find(_=>_.label===F.___drop[0]);if(p&&p.assignedValue&&$e(p.assignedValue)){let _=(u=s.functions[p.assignedValue.funcId])==null?void 0:u.cName;_&&(l.emitLine(' ASYNC_DEBUG(" Dropping capture struct\\n");'),l.emitLine(` ${_}(sm->__capture);`))}else l.emitLine(` /* Warning: ___drop function not found for capture struct ${f} */`)}}if(l.emitLine(""),!Pe(r)&&ut(r)){let c=q(r,s);l.emitLine(" // Drop result field if it was set (state == -1 means completed)"),l.emitLine(" int final_state = sm->state;"),l.emitLine(" if (final_state == -1) {"),l.emitLine(' ASYNC_DEBUG(" Dropping result field\\n");');let f=Oi(r,s);f?l.emitLine(` ${f}(sm->result);`):l.emitLine(` /* Warning: No ___drop function found for result type ${c} */`),l.emitLine(" }")}l.emitLine("");{let c=[];for(let f of o.capturedVariables){if(f.kind!=="local"||f.isOwningTheSameRcValueAs!==void 0)continue;let _=`sm->${Ys(f.id,"local")}`;if(ot(f.type))c.push(` if ((${_}).data != NULL) { __yo_decr_rc((void*)(${_}).data); }`);else if(Fn(f.type)||En(f.type))c.push(` if (${_} != NULL) { __yo_decr_rc_atomic((void*)${_}); }`);else if(rn(f.type)||z(f.type)&&pr(f.type)){let d=Oi(f.type,s);d?c.push(` if (${_} != NULL) { ${d}(${_}); }`):c.push(` if (${_} != NULL) { __yo_decr_rc((void*)${_}); }`)}else if(ut(f.type)){let d=Oi(f.type,s);d&&c.push(` ${d}(${_});`)}}if(c.length>0){l.emitLine(" // Drop local variables on escape (state == -2)"),l.emitLine(" if (sm->state == -2) {");for(let f of c)l.emitLine(f);l.emitLine(" }")}}l.emitLine(" // Memory freed by __yo_decr_rc after this function returns"),l.emitLine("}")}function h$(e,t,n,r,i,o,a,s,l,u){let c=u.emitter;if(l){let f=Object.values(u.types).find(_=>_.type===l),p=f?f.cName:`async_capture_${l.id}`;c.emitLine(`${t}* ${r}(${p} __capture) {`)}else c.emitLine(`${t}* ${r}() {`);c.emitLine(" // Allocate async block state machine (heap-backed, ref-counted)"),c.emitLine(` ${t}* sm = (${t}*)__yo_malloc(sizeof(${t}));`),c.emitLine(` memset(sm, 0, sizeof(${t}));`),c.emitLine(""),c.emitLine(" // Initialize reference counting header"),c.emitLine(" sm->header.ref_count = 1; // Caller owns initial reference"),c.emitLine(` GC_DEBUG("AsyncBlock ${t}: Created ptr=%p RC=1\\n", (void*)sm);`),c.emitLine(" sm->header.gc_flags = 0;"),c.emitLine(" sm->header.gc_mark = YO_GC_UNMARKED;"),c.emitLine(" sm->header.gc_next = NULL;"),c.emitLine(" sm->header.gc_prev = NULL;"),c.emitLine(` sm->header.dispose_fn = (void(*)(void*))${i};`),c.emitLine(" sm->header.traverse_fn = NULL; // TODO: Add traverse for cycle detection if needed"),c.emitLine(""),c.emitLine(" sm->state = 0;"),c.emitLine(" sm->continuation_fn = NULL;"),c.emitLine(" sm->continuation_sm = NULL;"),c.emitLine(""),l&&(c.emitLine(" // Initialize captured variables"),c.emitLine(" sm->__capture = __capture;"),c.emitLine("")),c.emitLine(" // Initialize result (will be set when async block completes)"),Pe(a)?c.emitLine(" // Result is unit type, no initialization needed"):c.emitLine(` memset(&sm->result, 0, sizeof(${s}));`),c.emitLine(""),c.emitLine(` sm->__yo_resume_fn = (void(*)(void*))${n};`),c.emitLine(""),c.emitLine(" return sm;"),c.emitLine("}"),c.emitLine("")}function A_(e){if(!e.deferredAsyncBlocks||e.deferredAsyncBlocks.length===0)return;let t=e.emitter;y$(e),t.emitLine("// Deferred async block implementations");let n=0;for(;n<e.deferredAsyncBlocks.length;){let r=e.deferredAsyncBlocks[n],i=e.deferredAsyncBlocks.length,{bodyExpr:o,asyncBlockId:a,structName:s,resumeFunctionName:l,constructorName:u,disposeFunctionName:c,futureType:f,resultType:p,resultTypeCName:_,captureType:d,analysis:g}=r,y=e.stateMachineVariables,h=e.currentEvidenceParams,v=new Map;for(let $ of g.capturedVariables)v.set($.id,$);if(d)for(let $ of d.fields)v.set($.label,{id:$.label,name:$.label,type:$.type,kind:"outer",isOwningTheSameRcValueAs:void 0});e.stateMachineVariables=v;let E=T_(o,a,s,l,g,f,d,e);if(e.stateMachineVariables=y,e.currentEvidenceParams=h,t.emitLine(""),g$(a,s,c,p,d,g,E,e),t.emitLine(""),h$(a,s,l,u,c,f,p,_,d,e),t.emitLine(""),e.deferredAsyncBlocks.length>i){let $=e.deferredAsyncBlocks.slice(i);for(let C of $)L_({asyncBlockId:C.asyncBlockId,structName:C.structName,resultType:C.resultType,resultTypeCName:C.resultTypeCName,captureType:C.captureType,analysis:C.analysis},e)}n++}}function I_(e){for(let t in e.functions){let{value:n}=e.functions[t];n.body&&S_(n.body,e)}}function S_(e,t){var n,r,i,o,a;if(e&&S(e)){let s=e;if(qn(e)){let l=(n=e.$)==null?void 0:n.type;if(l&&rt(l)&&Un(l)){let f=`${((r=e.$)==null?void 0:r.variableName)||`async_block_${Date.now()}`}_state_t`;e.$&&(e.$.asyncStateMachineStructName=f),t.types[l.id]={type:l,cName:f},t.emitter.emitDeclarationLine(`typedef struct ${f}_struct ${f}; // Forward declaration for async state machine`)}}if(qn(e)){let l=(i=e.$)==null?void 0:i.type;if(l&&rt(l)&&Un(l)){let c=((o=e.$)==null?void 0:o.variableName)||`io_async_block_${Date.now()}`,f=!!((a=e.$)!=null&&a.awaitAnalysis),p=f?`${c}_state_t`:`${c}_sync_fut_t`;e.$&&(e.$.asyncStateMachineStructName=p),t.types[l.id]={type:l,cName:p},t.emitter.emitDeclarationLine(`typedef struct ${p}_struct ${p}; // Forward declaration for io.async ${f?"state machine":"sync future"}`)}}for(let l of s.args)S_(l,t)}}function N_(e,t,n){var k,b,A,I,N;let r=(k=e.$)==null?void 0:k.type;if(!r||!rt(r))return"/* Error: io.async must return a Future type */";let i=Un(r);if(!i)return"/* Error: Could not extract Future module type */";let o=i.isFuture.outputType,a=q(o,n),s=(b=e.$)==null?void 0:b.asyncStateMachineStructName;if(!s)return"/* Error: Missing sync future struct name */";let l=`${s}_dispose`,u=`${s}_resume`,c=n.emitter,f=(I=(A=e.$)==null?void 0:A.runtimeArgExprsInOrder)==null?void 0:I[0];if(!(f!=null&&f.$))return"/* Error: Missing closure argument for io.async */";let p=B(f,t,n),_=f.$.type,d,g;if(z(_)&&_.resolvedConcreteType){let M=_.resolvedConcreteType,V=n.implClosureCallMap.get(M.id);V&&(d=V.functionCName);let O=n.types[M.id];O&&(g=O.cName)}if(!d||!g)return"/* Error: no closure function or capture type for io.async sync path */";c.emitDeclarationLine(`struct ${s}_struct {`),c.emitDeclarationLine(" yo_ref_header_t header;"),c.emitDeclarationLine(" int state;"),Pe(o)?c.emitDeclarationLine(" uint8_t result;"):c.emitDeclarationLine(` ${a} result;`),c.emitDeclarationLine(" void (*continuation_fn)(void*);"),c.emitDeclarationLine(" void* continuation_sm;"),c.emitDeclarationLine(" void (*__yo_resume_fn)(void*);"),c.emitDeclarationLine(` ${g} __capture;`),c.emitDeclarationLine("};"),c.emitDeclarationLine("");let y="";for(let M in n.functions){let V=n.functions[M];if(V.cName===d){let O=An(V.value.type);O.length>0&&(y=", "+O.map(W=>`(void*)sm->__capture.${W.fieldPath.join(".")}`).join(", "));break}}c.emitDeclarationLine(`void ${u}(void* ptr) {`),c.emitDeclarationLine(` ${s}* sm = (${s}*)ptr;`),Pe(o)?c.emitDeclarationLine(` ${d}(&sm->__capture${y});`):c.emitDeclarationLine(` sm->result = ${d}(&sm->__capture${y});`),y&&(c.emitDeclarationLine(" if (__yo_effect_escaped) {"),c.emitDeclarationLine(" __yo_effect_escaped = 0;"),c.emitDeclarationLine(" sm->state = -2;"),c.emitDeclarationLine(" return;"),c.emitDeclarationLine(" }")),c.emitDeclarationLine(" sm->state = -1;"),c.emitDeclarationLine(" void (*continuation)(void*) = sm->continuation_fn;"),c.emitDeclarationLine(" if (continuation) {"),c.emitDeclarationLine(" void* cont_sm = sm->continuation_sm;"),c.emitDeclarationLine(" continuation(cont_sm);"),c.emitDeclarationLine(" }"),c.emitDeclarationLine(" __yo_decr_rc(ptr);"),c.emitDeclarationLine("}"),c.emitDeclarationLine("");let h=f.$.captureType,v=h&&ut(h)?Oi(h,n):void 0,E=h&&ut(h)?ti(h,n):void 0,$=Oi(o,n);c.emitDeclarationLine(`void ${l}(void* ptr) {`),(v||$)&&(c.emitDeclarationLine(` ${s}* sm = (${s}*)ptr;`),v&&(c.emitDeclarationLine(" // Drop captured variables (future owns its references)"),c.emitDeclarationLine(` ${v}(sm->__capture);`)),$&&(c.emitDeclarationLine(" if (sm->state == -1) {"),c.emitDeclarationLine(` ${$}(sm->result);`),c.emitDeclarationLine(" }"))),c.emitDeclarationLine("}"),c.emitDeclarationLine("");let C=((N=e.$)==null?void 0:N.variableName)||"__io_async_result",w=Jt(r,C,n);return c.emitLine(`${t}${w} = (${s}*)__yo_malloc(sizeof(${s}));`),c.emitLine(`${t}memset(${C}, 0, sizeof(${s}));`),c.emitLine(`${t}${C}->header.ref_count = 1;`),c.emitLine(`${t}${C}->header.gc_flags = 0;`),c.emitLine(`${t}${C}->header.gc_mark = YO_GC_UNMARKED;`),c.emitLine(`${t}${C}->header.gc_next = NULL;`),c.emitLine(`${t}${C}->header.gc_prev = NULL;`),c.emitLine(`${t}${C}->header.dispose_fn = (void(*)(void*))${l};`),c.emitLine(`${t}${C}->header.traverse_fn = NULL;`),c.emitLine(`${t}${C}->__capture = ${p};`),E&&c.emitLine(`${t}${C}->__capture = ${E}(${C}->__capture);`),c.emitLine(`${t}${C}->state = 0;`),c.emitLine(`${t}${C}->__yo_resume_fn = ${u};`),c.emitLine(`${t}${C}->continuation_fn = NULL;`),c.emitLine(`${t}${C}->continuation_sm = NULL;`),C}var Kc=j(()=>{Jr();Gt();ce();Ae();Je();ge();Cu();qa();zt();ku();vr();fn()});function x_(e,t){for(let i=0;i<e.fields.length;i++){let o=e.fields[i];$e(o)&&(to(o.type,t),na(o.body,t))}let n=new Set,r=!0;for(;r;){r=!1;for(let i in t.functions){if(n.has(i))continue;n.add(i),r=!0;let o=t.functions[i];if(to(o.value.type,t),o.value.specializedType&&to(o.value.specializedType,t),na(o.value.body,t),o.value.calledComptimeFunctionCaches)for(let a of o.value.calledComptimeFunctionCaches)a.value&&a.value.type&&zn(a.value.type,t),na(a.body,t)}}}function to(e,t){for(let n of e.parameters)zn(n.type,t);for(let n of e.forallParameters)zn(n.type,t);zn(e.return.type,t)}function na(e,t){var n;if(e.$&&e.$.type&&zn(e.$.type,t),e.$&&e.$.value&&$e(e.$.value)){let r=e.$.value;r.isControlFunction?(to(r.type,t),jn(r.body,t)):t.functions[r.funcId]||r.type.parameters.map(a=>a.type).some(a=>z(a)&&rt(a)&&!a.resolvedConcreteType)||(t.functions[r.funcId]={value:r,cName:ve(r.funcId)},to(r.type,t),jn(r.body,t))}if(e.$&&e.$.deferredDropExpressions&&e.$.deferredDropExpressions.length>0)for(let r of e.$.deferredDropExpressions)na(r,t);if(e.$&&e.$.macroExpansion&&na(e.$.macroExpansion,t),e.$&&e.$.runtimeDestructurings)for(let{type:r}of e.$.runtimeDestructurings)zn(r,t);if(e.$&&e.$.captureType&&ze(e.$.captureType)){let r=e.$.captureType;if(!t.types[r.id]){t.types[r.id]={type:r,cName:`yo_${r.id}`};for(let i of r.fields)zn(i.type,t);for(let i of r.trait.fields)if(i.assignedValue&&$e(i.assignedValue)){let o=i.assignedValue;t.functions[o.funcId]||(t.functions[o.funcId]={value:o,cName:o.funcId},to(o.type,t),jn(o.body,t))}}}switch(e.tag){case"FnCall":if(T(e,D.test))break;na(e.func,t);for(let r of e.args)na(r,t);break;case"Atom":(n=e.$)!=null&&n.value&&Y(e.$.value)&&zn(e.$.value.value,t);break}}function zn(e,t){if(!t.types[e.id]){if(z(e)&&Qn(e)){if(e.resolvedConcreteType){zn(e.resolvedConcreteType,t);return}let n=or(e);n&&zn(n,t);return}if(z(e)&&rt(e)){let n=Un(e);n&&zn(n.isFuture.outputType,t);return}if(z(e)&&e.resolvedConcreteType){zn(e.resolvedConcreteType,t);return}if(!lt(e)){if(ze(e)||ln(e)||qe(e)||st(e)||ot(e)||Qe(e)||ht(e)||Rt(e)||Fn(e)||En(e)){let n=Rt(e)?q(e,t):`yo_${e.id}`;if(t.types[e.id]={type:e,cName:n},ze(e))for(let r of e.fields)zn(r.type,t);if(qe(e)){for(let r of e.variants)if(r.fields)for(let i of r.fields)zn(i.type,t)}if(ln(e))for(let r of e.fields)zn(r.type,t);if(ot(e)){let r=e;for(let i of r.requiredTraits)zn(i.traitType,t)}if(Fn(e)){let r=e;zn(r.childType,t),q(r,t)}if(En(e)){let r=e;zn(r.childType,t),q(r,t)}if(Rt(e)&&zn(e.childType,t),Qe(e)||ht(e)){for(let r of e.fields)zn(r.type,t);for(let r of e.fields)if(r.assignedValue&&$e(r.assignedValue)){let i=r.assignedValue;t.functions[i.funcId]||(t.functions[i.funcId]={value:i,cName:ve(i.funcId)},to(i.type,t),jn(i.body,t))}else if(r.assignedValue&&(At(r.assignedValue)||mn(r.assignedValue))){let i=r.assignedValue;js(i,t)}}}else if(at(e)){let n=e,r=n.childType,i=n.length;if(wt(i)){zn(r,t);let o=q(r,t),a=`Array_${ve(o)}_${i.value}`;t.arrayStructTypes.has(a)||t.arrayStructTypes.set(a,{childType:o,length:typeof i.value=="bigint"?Number(i.value):i.value}),t.types[e.id]={type:e,cName:a}}}else if(_t(e)){if(zn(e.childType,t),Rt(e.childType)){let r=e.childType.childType;zn(r,t);let i=q(r,t),o=`Slice_${ve(i)}`;t.sliceStructTypes.has(o)||t.sliceStructTypes.set(o,{childType:i})}t.types[e.id]={type:e,cName:q(e,t)}}else f_.has(e.tag)&&(t.types[e.id]={type:e,cName:q(e,t)});e.trait&&zn(e.trait,t)}}}var Xc=j(()=>{Gt();ce();Ae();Je();ge();zs();Qc();zt()});function ra(e){var t,n,r;if(e.$&&e.$.value&&Ge(e.$.value)&&!(te(e.$.type)&&e.$.type.isExtern)){if(!Pe(e.$.type))return!0}if(S(e)){if(ra(e.func))return!0;for(let i of e.args)if(!((t=i.$)!=null&&t.type&&Pe(i.$.type))&&ra(i))return!0}if(e.$&&e.$.macroExpansion){if(e.$.type&&Pe(e.$.type))return!1;if(ra(e.$.macroExpansion))return!0}if((n=e.$)!=null&&n.deferredDupExpressions){for(let i of e.$.deferredDupExpressions)if(ra(i))return!0}if((r=e.$)!=null&&r.deferredDropExpressions){for(let i of e.$.deferredDropExpressions)if(ra(i))return!0}return!1}function js(e,t){for(let n=0;n<e.fields.length;n++){let r=e.fields[n],i=e.type.fields[n];if($e(r)){let o=i.label;if(o==="main")t.functions[r.funcId]={value:r,cName:"__yo_user_main"};else if(t.isLibrary)if(t.currentModuleId&&r.funcId.startsWith(`fn_${t.currentModuleId}_`)){let s=ve(o);t.functions[r.funcId]={value:r,cName:s},t.exportedFunctionLabels||(t.exportedFunctionLabels=new Map),t.exportedFunctionLabels.set(r.funcId,o)}else t.functions[r.funcId]={value:r,cName:ve(r.funcId)};else t.functions[r.funcId]={value:r,cName:ve(r.funcId)};jn(r.body,t)}}}function V_(e,t){for(let n=0;n<e.fields.length;n++){let r=e.fields[n];r&&$e(r)?t.functions[r.funcId]||(r.isModuleEffectMember=!0,t.functions[r.funcId]={value:r,cName:ve(r.funcId)},jn(r.body,t)):r&&At(r)&&V_(r,t)}}function jn(e,t){var i,o,a,s,l,u,c,f,p,_,d;if((i=e.$)!=null&&i.value&&At(e.$.value)){let g=e.$.value;V_(g,t)}if(S(e)&&T(e,D.test)||S(e)&&T(e,F.comptime_expect_error))return;if(e.$&&e.$.macroExpansion&&jn(e.$.macroExpansion,t),(o=e.$)!=null&&o.effectAnalysis){let g=e.$.effectAnalysis.handlerValue;g&&$e(g)&&jn(g.body,t)}if(e.$&&e.$.closureFunctionValue){let g=e.$.closureFunctionValue;t.functions[g.funcId]||(t.functions[g.funcId]={value:g,cName:ve(g.funcId)},jn(g.body,t))}if(S(e)&&e.$&&e.$.dynCallTraitValues&&e.$.dynCallTraitValues.length>0){let g=e.$.type,y=e.args[0];if(ot(g)&&y&&((a=y.$)!=null&&a.type)){let h=y.$.type,v=e.$.dynCallTraitValues;if(v.length>0&&(rn(h)||Ar(h))){let E=Ar(h)?h.fields[0].type:h,$=`${E.id}_${g.id}`;t.dynImpls.set($,{dynType:g,concreteType:E,dataType:h,traitValues:v})}}}if(S(e)){let g=(s=e.func.$)==null?void 0:s.type,y=(l=e.func.$)==null?void 0:l.value;if(e.func.token.value==="?=")return;if(te(g)){if($e(y)&&y.isControlFunction){jn(y.body,t);for(let h of e.args)jn(h,t);return}if($e(y)){if(y.type.return.isCompileTimeOnly||Ec(y)&&!y.specializedType)return;if(y.specializedType&&ki(y.specializedType)&&An(y.specializedType).length===0){jn(e.func,t);for(let v of e.args)jn(v,t);return}if(!t.functions[y.funcId]){let h=!1;if(ra(y.body)){let v=y.specializedType??y.type;if(h=v.implicitParameters.length>0&&(An(v).length>0||!ki(y.type)&&y.type.implicitParameters.length>0),!h)return}if(!h&&!(An(y.specializedType??y.type).length>0)&&(y.specializedType??y.type).parameters.map(C=>C.type).some(C=>z(C)&&rt(C)&&!C.resolvedConcreteType))return;t.functions[y.funcId]={value:y,cName:ve(y.funcId)},jn(y.body,t)}}else if(g.isExtern==="c"){let h=g.externName?g.externName:H(e.func)?e.func.token.value:g.id;t.externFunctions[g.id]={type:g,cName:h}}else if(g.isExtern==="yo"){let h=g.externName;if(!(h&&h.startsWith("__yo_"))){let v=h?ve(h):H(e.func)?ve(e.func.token.value):ve(g.id);t.externFunctions[g.id]={type:g,cName:v}}}}jn(e.func,t);for(let h of e.args)jn(h,t)}let n=(u=e.$)==null?void 0:u.type,r=(c=e.$)==null?void 0:c.value;if(te(n)){if($e(r)&&r.isControlFunction){if(r.isModuleEffectMember=!0,t.functions[r.funcId]||(t.functions[r.funcId]={value:r,cName:ve(r.funcId)}),r.specializedFunctionCaches)for(let g of r.specializedFunctionCaches){let y=g.specializedFunction;y&&!t.functions[y.funcId]&&(y.isModuleEffectMember=!0,t.functions[y.funcId]={value:y,cName:ve(y.funcId)},jn(y.body,t))}jn(r.body,t);return}if($e(r)){if(Ec(r)&&!r.specializedFunctionCaches||t.functions[r.funcId])return;if(ra(r.body))return;t.functions[r.funcId]={value:r,cName:ve(r.funcId)},jn(r.body,t)}}if(Y((f=e.$)==null?void 0:f.value)&&zn(e.$.value.value,t),(p=e.$)!=null&&p.deferredDupExpressions)for(let g of e.$.deferredDupExpressions)jn(g,t);if((_=e.$)!=null&&_.deferredDropExpressions)for(let g of e.$.deferredDropExpressions)jn(g,t);if((d=e.$)!=null&&d.dynCallTraitValues)for(let g of e.$.dynCallTraitValues)js(g,t)}function D_(e){let t=F.dispose[0];for(let n in e.types){let{type:r}=e.types[n];if(!ze(r)||!r.isReferenceSemantics)continue;let i=Di({concreteType:r,methodName:t,env:r.env});for(let o of i)if(o.value&&$e(o.value)){let a=o.value;if(e.functions[a.funcId])continue;a.funcName||(a.funcName=t),e.functions[a.funcId]={value:a,cName:ve(a.funcId)},to(a.type,e),jn(a.body,e)}}}var Qc=j(()=>{Gt();Zi();ce();Ae();ge();Xc();zt();qa()});function M_(e){var r;let t=e.emitter,n=new Set;for(let[,i]of e.dynImpls){let o=((r=e.types[i.dynType.id])==null?void 0:r.cName)||`yo_dyn_${i.dynType.id}`;n.has(o)||(n.add(o),t.emitLine(`${o} __yo_dup_${o}(${o} dyn) {`),t.emitLine(" if (dyn.data) {"),t.emitLine(" __yo_incr_rc(dyn.data);"),t.emitLine(" }"),t.emitLine(" return dyn;"),t.emitLine("}"),t.emitLine(""),t.emitLine(`void __yo_drop_${o}(${o} dyn) {`),t.emitLine(" if (dyn.data) {"),t.emitLine(" __yo_decr_rc(dyn.data);"),t.emitLine(" }"),t.emitLine("}"),t.emitLine(""))}}function O_(e){var r,i,o;let t=e.emitter;if(e.dynImpls.size===0)return;t.emitLine(""),t.emitLine("// === Dyn Box Functions ==="),t.emitLine("// Constructor and dispose functions for dyn boxes"),t.emitLine("");let n=new Set;for(let[,a]of e.dynImpls){let s=z(a.concreteType)&&a.concreteType.resolvedConcreteType?a.concreteType.resolvedConcreteType:a.concreteType,u=`yo_dyn_box_${((r=e.types[s.id])==null?void 0:r.cName)||`unknown_${s.id}`}`;if(n.has(u))continue;n.add(u);let c=q(s,e);t.emitLine(`${u}* __yo_new_${u}(${c} value) {`),t.emitLine(` ${u}* box = (${u}*)__yo_malloc(sizeof(${u}));`),t.emitLine(" box->header.ref_count = 1;"),t.emitLine(" box->header.gc_flags = 0;"),t.emitLine(" box->header.gc_mark = YO_GC_UNMARKED;"),t.emitLine(" box->header.gc_next = NULL;"),t.emitLine(" box->header.gc_prev = NULL;"),t.emitLine(` box->header.dispose_fn = __yo_dispose_${u};`),t.emitLine(" box->header.traverse_fn = NULL; // TODO: Set if value contains GC types"),t.emitLine(" box->value = value;"),t.emitLine(" return box;"),t.emitLine("}"),t.emitLine(""),t.emitLine(`void __yo_dispose_${u}(void* ptr) {`),t.emitLine(` ${u}* box = (${u}*)ptr;`);let p=(i=(z(a.concreteType)&&a.concreteType.resolvedConcreteType?a.concreteType.resolvedConcreteType:a.concreteType).trait)==null?void 0:i.fields.find(_=>_.label===F.___drop[0]);if(p&&p.assignedValue&&$e(p.assignedValue)){let _=(o=e.functions[p.assignedValue.funcId])==null?void 0:o.cName;_&&t.emitLine(` ${_}(box->value);`)}t.emitLine("}"),t.emitLine("")}}function R_(e){var n,r,i,o;let t=e.emitter;if(e.dynImpls.size!==0){t.emitDeclarationLine(""),t.emitDeclarationLine("// === Dyn Wrapper Functions ==="),t.emitDeclarationLine("// Wrappers that unwrap boxed values and call impl methods"),t.emitDeclarationLine("");for(let[a,s]of e.dynImpls){let l=s.dataType,u=new Set([F.___dup[0],F.___drop[0],F.___dispose[0],F.dispose[0]]);for(let{traitType:c}of s.dynType.requiredTraits){if(!wn(c))continue;let f=c.isFn.callType,p=q(f.return.type,e),_=`yo_wrap_${a}_call`,d=["void* self_ptr"];for(let g=0;g<f.parameters.length;g++){let y=f.parameters[g],h=q(y.type,e);d.push(`${h} arg${g+1}`)}if(t.emitDeclarationLine(`static ${p} ${_}(${d.join(", ")}) {`),Ar(l)){let g=((n=e.types[l.id])==null?void 0:n.cName)||`unknown_${l.id}`,y=ve(l.fields[0].label);t.emitDeclarationLine(` ${g}* box = (${g}*)self_ptr;`);let h=l.fields[0].type,v=z(h)&&h.resolvedConcreteType?h.resolvedConcreteType:h,E=e.implClosureCallMap.get(v.id),$=(()=>{var w;if(E)return E.functionCName;for(let[,k]of Object.entries(e.functions)){let A=k.value.closureInfo;if(((w=A==null?void 0:A.captureType)==null?void 0:w.id)===v.id)return k.cName}})(),C=[];if($){C.push(`(void*)&box->${y}`);for(let w=0;w<f.parameters.length;w++)C.push(`arg${w+1}`);Gi(f.return.type)?t.emitDeclarationLine(` ${$}(${C.join(", ")});`):t.emitDeclarationLine(` return ${$}(${C.join(", ")});`)}else{C.push(`box->${y}.data`);for(let w=0;w<f.parameters.length;w++)C.push(`arg${w+1}`);Gi(f.return.type)?t.emitDeclarationLine(` box->${y}.call(${C.join(", ")});`):t.emitDeclarationLine(` return box->${y}.call(${C.join(", ")});`)}}else{t.emitDeclarationLine(" (void)self_ptr; /* Dyn(Fn): expected Box(...) data */");for(let g=0;g<f.parameters.length;g++)t.emitDeclarationLine(` (void)arg${g+1};`);Gi(f.return.type)?t.emitDeclarationLine(" return;"):(t.emitDeclarationLine(` ${p} zero = (${p})0;`),t.emitDeclarationLine(" return zero;"))}t.emitDeclarationLine("}"),t.emitDeclarationLine("")}for(let c=0;c<s.dynType.requiredTraits.length;c++){let{traitType:f}=s.dynType.requiredTraits[c];if(wn(f))continue;let p=s.traitValues[c];if(!p){t.emitDeclarationLine(`/* Warning: Module value missing for module ${c} */`);continue}let d=p.type.fields;for(let g=0;g<d.length;g++){let y=d[g];if(y.label==="Self"||u.has(y.label))continue;let h=p.fields[g];if(!h||!$e(h)){t.emitDeclarationLine(`/* Warning: Module field ${y.label} is not a function value */`);continue}let v=y.type;if(!te(v)){t.emitDeclarationLine(`/* Warning: Module field ${y.label} is not a function type */`);continue}let E=h.funcId,$=(r=e.functions[E])==null?void 0:r.cName;if(!$){t.emitDeclarationLine(`/* Warning: Impl function for ${y.label} not found */`);continue}let C=`yo_wrap_${a}_${y.label}`,w=q(v.return.type,e),k=["void* self_ptr"];for(let N=1;N<v.parameters.length;N++){let M=v.parameters[N],V=q(M.type,e);k.push(`${V} arg${N}`)}t.emitDeclarationLine(`static ${w} ${C}(${k.join(", ")}) {`);let b=(i=v.parameters[0])==null?void 0:i.type,A;if(Ar(l)){let N=((o=e.types[l.id])==null?void 0:o.cName)||`unknown_${l.id}`,M=ve(l.fields[0].label);t.emitDeclarationLine(` ${N}* box = (${N}*)self_ptr;`),b&&_t(b)?A=`&box->${M}`:A=`box->${M}`}else{let N=q(s.concreteType,e);t.emitDeclarationLine(` ${N} concrete_value = (${N})self_ptr;`),b&&_t(b)?A="&concrete_value":A="concrete_value"}let I=[A];for(let N=1;N<v.parameters.length;N++)I.push(`arg${N}`);Gi(v.return.type)?t.emitDeclarationLine(` ${$}(${I.join(", ")});`):t.emitDeclarationLine(` return ${$}(${I.join(", ")});`),t.emitDeclarationLine("}"),t.emitDeclarationLine("")}}}}}function P_(e){var r,i,o;let t=e.emitter;if(e.dynImpls.size===0)return;t.emitDeclarationLine(""),t.emitDeclarationLine("// === Dyn TypeId Statics ==="),t.emitDeclarationLine("// Unique static per concrete type \u2014 address is the runtime TypeId"),t.emitDeclarationLine("");let n=new Set;e.typeIdStatics||(e.typeIdStatics=new Map);for(let[,a]of e.dynImpls){let s=z(a.concreteType)&&a.concreteType.resolvedConcreteType?a.concreteType.resolvedConcreteType:a.concreteType,l=((r=e.types[s.id])==null?void 0:r.cName)||`unknown_${s.id}`,u=`yo_typeid_${l}`;!n.has(u)&&!e.typeIdStatics.has(s.id)&&(n.add(u),e.typeIdStatics.set(s.id,u),t.emitDeclarationLine(`static const char ${u} = 0; // TypeId for ${l}`))}t.emitDeclarationLine(""),t.emitDeclarationLine("// === Dyn Static Vtables ==="),t.emitDeclarationLine("// Static vtables for dynamic dispatch"),t.emitDeclarationLine("");for(let[a,s]of e.dynImpls){let l=((i=e.types[s.dynType.id])==null?void 0:i.cName)||`yo_dyn_${s.dynType.id}`,u=z(s.concreteType)&&s.concreteType.resolvedConcreteType?s.concreteType.resolvedConcreteType:s.concreteType,c=((o=e.types[u.id])==null?void 0:o.cName)||`unknown_${u.id}`,f=`yo_vtable_${a}`,p=`${l}_vtable`,_=`yo_typeid_${c}`;t.emitDeclarationLine(`// Vtable for impl(${c}, ${s.dynType.requiredTraits.map(({traitType:y})=>y.typeName||"?").join(" + ")})`),t.emitDeclarationLine(`static const ${p} ${f} = {`),t.emitDeclarationLine(` .__yo_type_id = (uintptr_t)&${_},`);let d=new Set,g=new Set([F.___dup[0],F.___drop[0],F.___dispose[0],F.dispose[0]]);for(let{traitType:y}of s.dynType.requiredTraits){if(wn(y)){let h=`yo_wrap_${a}_call`;t.emitDeclarationLine(` .call = ${h},`),d.add("call");continue}for(let h of y.fields)if(h.label!=="Self"&&!g.has(h.label)&&!d.has(h.label)&&(d.add(h.label),te(h.type))){let v=h.type;if(v.parameters.length>0){let E=v.parameters[0];if(E&&E.label==="self"){let $=`yo_wrap_${a}_${h.label}`;t.emitDeclarationLine(` .${ve(h.label)} = ${$},`)}}}}t.emitDeclarationLine("};"),t.emitDeclarationLine("")}}var U_=j(()=>{ce();Ae();ge();zt()});function z_(e){e.emitLine(`
195
+ `)){let Xe=Re.trim();Xe&&(l.emitLine(` ${Xe}`),g.push(Xe))}l.emitLine("")}}l.emitLine(" // Final state - complete the Future"),Ji({emitter:l,indent:" ",debugLabel:"Future %p completed"})}s.inAsyncStateMachine=le,s.stateMachineVariables=Ee,s.variableIdRemapping=ne}else s.inAsyncStateMachine=le,s.stateMachineVariables=Ee,s.variableIdRemapping=ne;l.emitLine(" }")}return l.emitLine(" }"),l.emitLine("}"),l.emitLine(""),g}function Yc(e,t,n,r,i){let o=i.emitter,a=qc(t,n);if(e.tag==="FnCall"&&T(e,":=")){let s=e.args[1];if(s&&s.tag==="FnCall"&&Nr(s)){let l=s.args[0];if(l){let u=B(l,r,i);o.emitLine(`${r}// Store Future for additional await in cond branch`),o.emitLine(`${r}sm->${a} = ${u};`)}}return}if(e.tag==="FnCall"&&Nr(e)){let s=e.args[0];if(s){let l=B(s,r,i);o.emitLine(`${r}// Store Future for additional await in cond branch`),o.emitLine(`${r}sm->${a} = ${l};`)}return}if(e.tag==="FnCall"&&T(e,D.cond)){Ya(e,t,0,r,i);return}if(e.tag==="FnCall"&&T(e,D.match)){Ya(e,t,0,r,i);return}if(e.tag==="FnCall"&&T(e,D.while)){Ya(e,t,0,r,i);return}if(e.tag==="FnCall"&&T(e,D.begin)){Ya(e,t,0,r,i);return}o.emitLine(`${r}// Warning: unhandled await pattern in remaining expressions`)}function E_(e){if($n(e,"return")||T(e,"return"))return!0;if(e.tag==="FnCall"){for(let t of e.args)if(E_(t))return!0}return!1}function l$(e){let t=[];for(let n of e)if(n.isEffectRowSpread){let r=n.type;z(r)&&r.resolvedConcreteType&&(r=r.resolvedConcreteType),Xt(r)&&t.push(...r.implicitParameters)}else t.push(n);return t}function u$(e,t,n,r){var u,c,f,p,_;let i=(u=e.args)==null?void 0:u[0];if(!((c=i==null?void 0:i.$)!=null&&c.type))return;let o=Un(i.$.type);if(!((f=o==null?void 0:o.isFuture.effects)!=null&&f.length))return;let a=l$(o.isFuture.effects),s=r.emitter,l=(p=e.args)==null?void 0:p.find(d=>S(d)&&T(d,D.using));if(l){let d=l.args;for(let g=0;g<a.length&&g<d.length;g++){let y=a[g],h=d[g];if(te(y.type)){if(y.type.forallParameters.length>0)continue;let v=B(h,n,r),E=y.label;s.emitLine(`${n}${t}->__capture.${E} = (void*)${v};`)}else Qe(y.type)&&v_(y.type,t,n,(_=h.$)==null?void 0:_.value,r,e)}}else for(let d of a)if(te(d.type)){if(d.type.forallParameters.length>0)continue;let g=c$(d.label,r,e);g&&s.emitLine(`${n}${t}->__capture.${d.label} = (void*)${g};`)}else Qe(d.type)&&v_(d.type,t,n,void 0,r,e)}function v_(e,t,n,r,i,o){var s,l,u,c;let a=i.emitter;for(let f of e.fields){if(!te(f.type))continue;let p;if(i.stateMachineVariables){for(let[,_]of i.stateMachineVariables)if(_.name===f.label&&_.kind==="outer"){p=`sm->__capture.${f.label}`;break}}if(!p&&r&&At(r)){let _=e.fields.indexOf(f),d=r.fields[_];if(d&&$e(d)){let g=i.functions[d.funcId];g&&(p=g.cName)}}if(!p&&i.currentEvidenceParams){for(let _ of i.currentEvidenceParams.values())if(_.fieldLabel===f.label){p=_.cParamName;break}}if(!p){let _=((s=o.$)==null?void 0:s.env)??((l=o.func.$)==null?void 0:l.env);if(_){let d=hr(_,g=>g.isImplicit===!0);for(let g=d.length-1;g>=0;g--){let y=d[g],h=(u=y.value)==null?void 0:u[y.value.length-1];if(h&&At(h)){let v=h.type.fields.findIndex(E=>E.label===f.label);if(v>=0){let E=h.fields[v];if(E&&$e(E)){let $=(c=i.functions[E.funcId])==null?void 0:c.cName;if($){p=$;break}}}}}}}p&&a.emitLine(`${n}${t}->__capture.${f.label} = (void*)${p};`)}}function c$(e,t,n){if(t.currentEvidenceParams){for(let r of t.currentEvidenceParams.values())if(r.fieldLabel===e)return r.cParamName}if(t.stateMachineVariables){for(let[,r]of t.stateMachineVariables)if(r.name===e&&r.kind==="outer")return`sm->__capture.${e}`}}var Cu=j(()=>{dc();ft();Jr();Gt();ce();Zo();Ae();Je();yn();ge();ea();vr();fn();zt();h_()});function $_(e){var n,r,i,o,a;let t=e.emitter;t.emitDeclarationLine("// Function declarations"),t.emitDeclarationLine("/// Extern functions");for(let s in e.externFunctions){let{cName:l,type:u}=e.externFunctions[s];if(u.isExtern==="yo"){if(f$.has(l))continue;Hc(u,l,!0,e);continue}u.isExtern==="c"&&u.cInclude||l.startsWith("__atomic_")||l.startsWith("__sync_")||Hc(u,l,!0,e)}t.emitDeclarationLine(""),t.emitDeclarationLine("/// Async runtime functions"),t.emitDeclarationLine("void yo_async_spawn_task(void (*resume_fn)(void*), void* state_machine);"),t.emitDeclarationLine("void yo_future_dispose(void* ptr);"),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Object constructors"),_$(e),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Closure constructors"),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Capture dispose functions"),d$(e),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Dyn type constructors"),t.emitDeclarationLine(""),t.emitDeclarationLine("/// Regular functions");for(let s in e.functions){let{cName:l,value:u}=e.functions[s],c=l==="__yo_user_main",f=(r=(n=u.body)==null?void 0:n.$)==null?void 0:r.effectAnalysis,p=f&&f.hasEffects;if(!c&&!u.type.isClosure&&((i=u.specializedFunctionCaches)==null?void 0:i.length)>0||!c&&!p&&!u.isModuleEffectMember&&!u.type.isClosure&&!u.specializedType&&(((o=u.specializedFunctionCaches)==null?void 0:o.length)??0)===0&&An(u.specializedType??u.type).length===0&&[...u.type.implicitParameters,...u.type.parameters.filter($=>$.isImplicit)].some($=>te($.type)))continue;let d=u.specializedType??u.type,g=An(d).length>0;if(!c&&u.isIoAsyncStateMachineClosure||!c&&!p&&!g&&!u.isModuleEffectMember&&(wi(u.type)&&!u.type.isClosure||((a=u.specializedFunctionCaches)==null?void 0:a.length)>0&&!u.type.isClosure||bo(u)||Ra(u)||u.isIoAsyncStateMachineClosure))continue;let y=u.specializedType??u.type,h=!p&&!u.isModuleEffectMember&&(y.parameters.some($=>lt($.type))||y.forallParameters.length>0),v=lt(y.return.type),E=z(y.return.type)&&y.return.type.requiredTraits.length>0;h||v&&!E&&!u.isModuleEffectMember||Hc(y,l,!1,e,u.isModuleEffectMember?void 0:u.body,u.specializedType&&An(y).length===0&&An(u.type).some($=>$.fieldFunctionType.forallParameters&&$.fieldFunctionType.forallParameters.length>0)?u.type:void 0)}t.emitDeclarationLine("/// Closure vtable instances"),t.emitDeclarationLine("")}function An(e){let t=[],n=p$(e.implicitParameters);for(let r of n)Qe(r.type)?b_(r.label,r.type,[],t):te(r.type)&&t.push({implicitLabel:r.label,fieldLabel:r.label,fieldPath:[r.label],fieldFunctionType:r.type,cParamName:ve(r.label)});return t}function b_(e,t,n,r){for(let i of t.fields)if(te(i.type)){let o=[...n,i.label],a=o.join("__");r.push({implicitLabel:e,fieldLabel:a,fieldPath:o,fieldFunctionType:i.type,cParamName:ve(`${e}__${a}`)})}else Qe(i.type)&&b_(e,i.type,[...n,i.label],r)}function p$(e){let t=[];for(let n of e)if(n.isEffectRowSpread){let r=n.type;z(r)&&r.resolvedConcreteType&&(r=r.resolvedConcreteType),Xt(r)&&t.push(...r.implicitParameters)}else t.push(n);return t}function Pi(e,t,n,r,i){let o=r||q(e.return.type,n),a=e.parameters.filter(f=>!f.isCompileTimeOnly),s=[];e.isClosure&&s.push("void* closure_context");let l=a.map((f,p)=>{let _=ve(f.label||`param${p}`);if(te(f.type))return Pi(f.type,"(*)",n).replace(" (*)(",` (*${_})(`);{let d;return z(f.type)&&rt(f.type)?f.type.resolvedConcreteType?d=q(f.type.resolvedConcreteType,n)+"*":d=q(f.type,n):d=q(f.type,n),`${d} ${_}`}});s.push(...l);let u=An(i??e);for(let f of u)if(f.fieldFunctionType.forallParameters&&f.fieldFunctionType.forallParameters.length>0)s.push(`void* ${f.cParamName}`);else{let p=Pi(f.fieldFunctionType,"(*)",n).replace(" (*)(",` (*${f.cParamName})(`);s.push(p)}let c=s.join(", ");return`${o} ${t}(${c})`}function Hc(e,t,n,r,i,o){var u,c,f,p;let a;if(i&&rt(e.return.type)){let _=Bs(i);(u=_==null?void 0:_.$)!=null&&u.asyncStateMachineStructName?a=`${_.$.asyncStateMachineStructName}*`:(c=i.$)!=null&&c.type&&z(i.$.type)&&rt(i.$.type)&&(a=q(i.$.type,r))}if(i&&z(e.return.type)&&!rt(e.return.type)&&(f=i.$)!=null&&f.type&&(a=q(i.$.type,r)),!a&&i&&((p=i.$)!=null&&p.type)&&!rt(e.return.type)){let _=q(e.return.type,r),d=q(i.$.type,r);_!==d&&(a=d)}let s=a?Pi(e,t,r,a,o):Pi(e,t,r,void 0,o),l=x(e);r.emitter.emitDeclarationLine(`${n?"extern ":""}${s}; // ${l}`)}function _$(e){let t=e.emitter;t.emitDeclarationLine("void __yo_decr_rc(void* ptr); // Decrement reference count"),t.emitDeclarationLine("void* __yo_incr_rc(void* ptr); // Increment reference count"),t.emitDeclarationLine("void __yo_gc_register(void* ptr); // Register object for cycle detection"),t.emitDeclarationLine("void __yo_gc_unregister(void* ptr); // Unregister object from cycle detection"),t.emitDeclarationLine("void __yo_gc_collect(); // Trigger garbage collection"),t.emitDeclarationLine("void __yo_gc_init_thread(); // Initialize thread-local GC state (for worker threads)"),t.emitDeclarationLine("void __yo_cleanup_thread_gc(); // Clean up thread-local GC state"),t.emitDeclarationLine("static void yo_init_process_cleanup(void); // Initialize process cleanup");for(let n in e.types){let{type:r,cName:i}=e.types[n];if(ze(r)&&r.isReferenceSemantics){if(r.fields.some(l=>lt(l.type)))continue;let a=`__yo_new_${i}`,s=r.fields.map(l=>{let u=q(l.type,e),c=ve(l.label);return`${u} ${c}`}).join(", ");t.emitDeclarationLine(`${i}* ${a}(${s}); // Constructor`)}}}function d$(e){let t=e.emitter;if(e.closureCaptureMap&&e.closureCaptureMap.size>0)for(let[n]of e.closureCaptureMap){let r=`__yo_dispose_closure_${n}`;t.emitDeclarationLine(`void ${r}(void* closure_ptr);`)}}function C_(e){let t=new Set;for(let n in e.functions){let{value:r,cName:i}=e.functions[n],o=r.specializedType;if(bo(r)||!o||!ii(r.type)||ii(o))continue;let a=o.parameters.some(u=>lt(u.type)),s=lt(o.return.type);a||s||An(r.type).some(u=>u.fieldFunctionType.forallParameters&&u.fieldFunctionType.forallParameters.length>0)||t.has(n)||(t.add(n),e.emitter.emitDeclarationLine(`${Pi(o,i,e)}; // specialized function: ${x(r.type)}`))}}var f$,qa=j(()=>{Gt();Ae();Je();zt();f$=new Set(["yo_mutex_init","yo_mutex_destroy","yo_mutex_lock","yo_mutex_unlock","yo_cond_init","yo_cond_destroy","yo_cond_wait","yo_cond_signal","yo_cond_broadcast","yo_thread_create","yo_thread_join","yo_thread_self"])});function Ui(e,t,n){let r=ue(t,e);return r.length===0?!1:r[r.length-1].frameLevel<=n}function k_(e){var t,n;return!!((t=e.$)!=null&&t.closureFunctionValue&&((n=e.$)!=null&&n.type)&&Qn(e.$.type))}function m$(e,t,n,r,i,o=!1){var _;let a=Object.values(i.types).find(d=>d.type===e);if(!a)return i.emitter.emitLine(`${r}/* Error: Capture type not found for closure */`),null;let s=a.cName,l=new Map;if((_=n.$)!=null&&_.deferredDupExpressions)for(let d of n.$.deferredDupExpressions){let g=bu(d);g&&l.set(g,d)}let u=e.fields.map(d=>{var v,E;if(d.isEffectParam)return"NULL";let g,y=d.exprs.expr;if((E=(v=y.$)==null?void 0:v.deferredDupExpressions)!=null&&E.length&&(g=y.$.deferredDupExpressions[0]),!g){let $=[d.label];H(y)&&$.push(y.token.value);for(let C of $){let w=l.get(C);if(w){g=w;break}}}if(g)return B(g,r,i);let h={tag:"Atom",token:y.token,$:y.$};return B(h,r,i)}),c=`(${s}){ ${u.map((d,g)=>{let y=e.fields[g];return y?`.${y.label} = ${d}`:`/* Error: missing field at index ${g} */`}).join(", ")} }`,f=n.token.position.row!==void 0?`${Date.now()}_${n.token.position.row}`:`${Date.now()}_${Math.random().toString(36).substr(2,9)}`,p=`__capture_${t}_${f}`;return o?i.emitter.emitLine(`${r}${s} ${p} = ${c};`):(i.emitter.emitLine(`${r}${s}* ${p} = (${s}*)__yo_malloc(sizeof(${s}));`),i.emitter.emitLine(`${r}*${p} = ${c};`)),{captureTempVar:p,captureCName:s}}function w_(e,t,n){var d;if(!e.$||!e.$.type||!e.$.closureFunctionValue)return"// Error: Missing closure metadata";let r=or(e.$.type),i=r.isFn.callType,o=e.$.closureFunctionValue,a=e.$.captureType,s=(d=n.functions[o.funcId])==null?void 0:d.cName;if(!s)return"// Error: Closure implementation function not found in context";let l=ot(e.$.type),u;if(l){let g=n.types[e.$.type.id];if(!g)return"// Error: Dyn closure type not found in context";u=g.cName}let c=a&&ze(a)&&a.fields.length>0,f=q(i.return.type,n),p=i.parameters.map(g=>q(g.type,n)).join(", "),_=`(${f} (*)(void*${p?", "+p:""}))${s}`;if(c&&a&&ze(a)){let g=!l,y=m$(a,i.id,e,t,n,g);if(!y)return"// Error: Failed to allocate closure capture";let{captureTempVar:h}=y;if(l){let v=`__yo_create_${u}`,E=`__yo_dispose_${u}`;return`${v}(${h}, ${E}, ${_})`}else return n.implClosureCallMap.set(a.id,{functionCName:s,callTypeId:r.isFn.callType.id}),h}else if(l){let g=`__yo_create_${u}`,y=`__yo_dispose_${u}`;return`${g}(NULL, ${y}, ${_})`}else{if(e.$.type.tag==="SomeType"){let g=e.$.type;if(g.resolvedConcreteType)return n.implClosureCallMap.set(g.resolvedConcreteType.id,{functionCName:s,callTypeId:r.isFn.callType.id}),`(${q(g.resolvedConcreteType,n)}){}`}return"// Error: Impl(Fn(...)) without captures missing resolvedConcreteType"}}var Hs=j(()=>{ft();Gt();ce();Ae();Mr();zt();fn()});function jc(e,t,n){if(e.pendingDeferredDrops&&e.loopBodyDropsBaselineCount!==void 0){let r=e.loopBodyDropsBaselineCount,i=e.pendingDeferredDrops.length,o=e.pendingDeferredDrops.slice(0,i-r);for(let a of o){let s=B(a,t,n);s&&n.emitter.emitLine(`${t}${s};`)}}}function Ha(e,t,n=""){var a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k,b,A,I,N,M,V,O,W,P;let r=t;if(e.token.value==="continue"){if(r.currentContinueLabel)return jc(r,n,t),`goto ${r.currentContinueLabel}`;if(r.currentLoopLabel)return jc(r,n,t),"continue";if(r.smWhileContinueInfo){if(r.smWhileContinueInfo.emitDropsBeforeGoto&&r.smWhileBodyDrops&&r.smWhileBodyDrops.length>0){let G=t.emitter;for(let U of r.smWhileBodyDrops){let X=B(U,n,t);X&&X.includes("sm->")&&G.emitLine(`${n}${X};`)}}if(r.smWhileContinueInfo.stepExpr){let G=t.emitter,U=B(r.smWhileContinueInfo.stepExpr,n,t);U&&G.emitLine(`${n}${U};`)}return`goto ${r.smWhileContinueInfo.label}`}return"continue"}if(e.token.value==="break"){if(r.currentLoopLabel)return jc(r,n,t),r.insideMatch?`goto ${r.currentLoopLabel}`:"break";if(r.smWhileBreakInfo){let{label:G,activeIndex:U}=r.smWhileBreakInfo;if(r.smWhileBodyDrops&&r.smWhileBodyDrops.length>0){let X=t.emitter;for(let re of r.smWhileBodyDrops){let ee=B(re,n,t);ee&&ee.includes("sm->")&&X.emitLine(`${n}${ee};`)}}return U!==void 0?(t.emitter.emitLine(`${n}sm->while_loop_${U}_active = false;`),`goto ${G}`):`goto ${G}`}return"break"}if(e.token.value==="return"){if(r.inAsyncStateMachine){let G=t.emitter,U=r.inAsyncStateMachine.futureType,re=Un(U).isFuture.outputType,ee=Pe(re);if((a=e.$)!=null&&a.deferredDropExpressions)for(let de of e.$.deferredDropExpressions){let Q=B(de,n,t);Q&&Q.includes("sm->")&&G.emitLine(`${n}${Q};`)}if(r.pendingDeferredDrops&&r.pendingDeferredDrops.length>0){G.emitLine(`${n}// Drop local variables before early completion`);for(let de of r.pendingDeferredDrops){let Q=B(de,n,t);Q&&Q.includes("sm->")&&G.emitLine(`${n}${Q};`)}}G.emitLine(`${n}// Early return - complete the result Future`);let fe=ee?void 0:`(${q(re,t)}){0}`;return Ji({emitter:G,indent:n,resultCode:fe,debugLabel:t.currentFunctionName}),""}return"return"}if((s=e.$)!=null&&s.type&&Pe(e.$.type))return"";if((r.inAsyncStateMachine||r.inEffectStateMachine)&&r.stateMachineVariables){let G=e.token.value;if((l=r.localShadowedVariables)!=null&&l.has(G))return ve(G);let U=!1;if((u=e.$)!=null&&u.env){let X=ue(e.$.env,G);if(X.length>0){let re=X[X.length-1],ee=re.isOwningTheSameRcValueAs?re.isOwningTheSameRcValueAs.id:re.id;(c=r.variableIdRemapping)!=null&&c.has(ee)&&(ee=r.variableIdRemapping.get(ee));let fe=r.stateMachineVariables.get(ee);if(fe){let de=fe.kind==="outer"?`__capture.${G}`:`var_${fe.id}`;return U=!0,`sm->${de}`}}}if(!U){for(let[X,re]of r.stateMachineVariables)if(re.name===G){let ee=re.kind==="outer"?`__capture.${G}`:`var_${X}`;return U=!0,`sm->${ee}`}}if((f=e.$)!=null&&f.env){let X=ue(e.$.env,G);if(X.length>0){let re=X[X.length-1];if(re.isOwningTheSameRcValueAs){let ee=re.isOwningTheSameRcValueAs.name,fe=re.isOwningTheSameRcValueAs.id;for(let[de,Q]of r.stateMachineVariables)if(Q.name===ee||de===fe)return`sm->${Q.kind==="outer"?`__capture.${ee}`:`var_${de}`}`}}}if(r.currentClosureCaptures&&r.currentClosureCaptures.includes(G)&&r.currentClosureCaptureFrameLevel!==void 0){let X=r.currentClosureCaptureTypeCName;return X?`((${X}*)closure_context)->${et(G,(p=e.$)==null?void 0:p.env)}`:`closure_context->${et(G,(_=e.$)==null?void 0:_.env)}`}if((d=e.$)!=null&&d.variableName){if((g=e.$)!=null&&g.env&&((y=e.$)!=null&&y.value)&&!Ge(e.$.value)){let X=ue(e.$.env,e.$.variableName);if(X.length>0&&X[X.length-1].isCompileTimeOnly)return Jn(e.$.value,t,e)}return et(e.$.variableName,e.$.env)}}if((h=e.$)!=null&&h.variableName){if((v=e.$)!=null&&v.env&&((E=e.$)!=null&&E.value)&&!Ge(e.$.value)){let G=ue(e.$.env,e.$.variableName);if(G.length>0&&G[G.length-1].isCompileTimeOnly)return Jn(e.$.value,t,e)}if(!(r.currentClosureCaptures&&r.currentClosureCaptures.includes(e.token.value)&&(($=e.$)!=null&&$.env)&&r.currentClosureCaptureFrameLevel!==void 0&&Ui(e.token.value,e.$.env,r.currentClosureCaptureFrameLevel)))return et(e.$.variableName,(C=e.$)==null?void 0:C.env)}if((w=e.$)!=null&&w.value&&!Ge(e.$.value))return Jn(e.$.value,t,e);let i=(k=e.$)!=null&&k.env&&r.currentClosureCaptureFrameLevel!==void 0?Ui(e.token.value,e.$.env,r.currentClosureCaptureFrameLevel):!1;if(r.currentClosureCaptures&&r.currentClosureCaptures.includes(e.token.value)&&r.currentClosureCaptureFrameLevel!==void 0&&(!((b=e.$)!=null&&b.env)||i)){let G=r.currentClosureCaptureTypeCName;return G?`((${G}*)closure_context)->${et(e.token.value,(A=e.$)==null?void 0:A.env)}`:`closure_context->${et(e.token.value,(I=e.$)==null?void 0:I.env)}`}if(r.currentFunctionName&&!r.currentClosureCaptures){let G=Object.values(r.functions).find(U=>U.cName===r.currentFunctionName);if(G&&G.value.type.isClosure){let U=Object.values(r.types).find(X=>te(X.type)&&X.type.isClosure&&X.type===G.value.type);if(U)return`((${`${U.cName}_capture`}*)closure_context->data)->${et(e.token.value,(N=e.$)==null?void 0:N.env)}`}}if((M=e.$)!=null&&M.env){let G=ue(e.$.env,e.token.value);if(G.length>0){let U=G[G.length-1];if((V=U.value)!=null&&V[0]&&$e(U.value[0])){let X=(O=t.functions[U.value[0].funcId])==null?void 0:O.cName;if(X)return X}else if(te(U.type)&&(Ge((W=U.value)==null?void 0:W[0])||U.value===void 0)){let X=Object.entries(t.functions).find(([re,ee])=>ee.value.funcName===e.token.value);if(X)return X[1].cName}}}return et(e.token.value,(P=e.$)==null?void 0:P.env)}var ku=j(()=>{ft();Gt();Ae();ge();zt();ea();Hs();Ua();fn()});function F_(e,t,n){var y,h,v,E,$,C,w,k,b,A,I,N,M;let r;if(qn(e)){let V=(h=(y=e.$)==null?void 0:y.runtimeArgExprsInOrder)==null?void 0:h[0],O=(v=V==null?void 0:V.$)==null?void 0:v.closureFunctionValue;O&&$e(O)&&(r=O.body)}else r=e.args[0];if(!r)return"/* Error: async requires exactly 1 argument */";let i=(E=e.$)==null?void 0:E.type;if(!i||!rt(i))return"/* Error: async block must have Future type */";let o=Un(i);if(!o)return"/* Error: Could not extract Future module type */";let a=(($=e.$)==null?void 0:$.variableName)||`async_block_${Date.now()}`,s=`${a}_state_t`,l=`${a}_resume`,u=`__yo_new_${a}`,c=`${a}_state_dispose`;n.types[i.id]={type:i,cName:s};let f=(C=e.$)==null?void 0:C.awaitAnalysis;if(!f)throw new Error("Missing await analysis for async block. This should have been computed during evaluation.");let p=o.isFuture.outputType,_=q(p,n),d=n.emitter;if(d.emitDeclarationLine(`void ${c}(void* sm_ptr); // Dispose function for state machine`),d.emitDeclarationLine(""),d.emitDeclarationLine(`void ${l}(${s}* sm);`),d.emitDeclarationLine(""),(w=e.$)!=null&&w.captureType){let V=e.$.captureType,O=Object.values(n.types).find(P=>P.type===V),W=O?O.cName:`async_capture_${V.id}`;d.emitDeclarationLine(`${s}* ${u}(${W} __capture);`)}else d.emitDeclarationLine(`${s}* ${u}();`);d.emitDeclarationLine(""),n.deferredAsyncBlocks||(n.deferredAsyncBlocks=[]),n.deferredAsyncBlocks.push({bodyExpr:r,asyncBlockId:a,structName:s,resumeFunctionName:l,constructorName:u,disposeFunctionName:c,futureType:i,futureModuleType:o,resultType:p,resultTypeCName:_,captureType:(k=e.$)==null?void 0:k.captureType,analysis:f});let g=(b=e.$)==null?void 0:b.captureType;if(g){let V=Object.values(n.types).find(fe=>fe.type===g),O=V?V.cName:`async_capture_${g.id}`,W=n,P=W.currentClosureCaptures!==void 0||W.inAsyncStateMachine!==void 0||W.inEffectStateMachine!==void 0,G=!1,U=g.fields.map(fe=>{var pe,Z;if(fe.isEffectParam)return`.${fe.label} = NULL`;let de;if(!P&&((pe=e.$)!=null&&pe.deferredDupExpressions))for(let me of e.$.deferredDupExpressions){let ke;if(S(me)&&(me.args.length>0&&H(me.args[0])?ke=me.args[0].token.value:me.args.length===0&&S(me.func)&&T(me.func,".")&&me.func.args.length>=2&&H(me.func.args[0])&&(ke=me.func.args[0].token.value)),ke===fe.label){de=me;break}}if(de)return G=!0,(Z=de.$)!=null&&Z.variableName?(B(de,t,n),`.${fe.label} = ${de.$.variableName}`):`.${fe.label} = ${B(de,t,n)}`;let Q={tag:"Atom",token:fe.exprs.expr.token,$:fe.exprs.expr.$};return`.${fe.label} = ${Ha(Q,n)}`}).join(", "),X=`(${O}){${U}}`;if(!G){let fe=ti(g,n);fe&&(X=`${fe}(${X})`)}let re=((A=e.$)==null?void 0:A.variableName)||"async_result",ee=`${u}(${X})`;if(re&&((I=e.$)!=null&&I.type)){let fe=Jt(e.$.type,re,n);return n.emitter.emitLine(`${t}${fe} = ${ee};`),re}else return ee}else{let V=((N=e.$)==null?void 0:N.variableName)||"async_result",O=`${u}()`;if(V&&((M=e.$)!=null&&M.type)){let W=Jt(e.$.type,V,n);return n.emitter.emitLine(`${t}${W} = ${O};`),V}else return O}}function L_(e,t){var p;let n=t.emitter,{asyncBlockId:r,structName:i,resultType:o,resultTypeCName:a,captureType:s,analysis:l}=e;if(n.emitDeclarationLine(`// State machine for async block ${r} - implements Future(${x(o)})`),n.emitDeclarationLine(`struct ${i}_struct {`),n.emitDeclarationLine(" yo_ref_header_t header; // Reference counting header (must be first)"),n.emitDeclarationLine(" int state; // Current state (0 = cold, 1..N = intermediate, -1 = completed, -2 = aborted)"),Pe(o)?n.emitDeclarationLine(" uint8_t result; // Dummy result for unit type"):n.emitDeclarationLine(` ${a} result; // The result value of type ${x(o)}`),n.emitDeclarationLine(" void (*continuation_fn)(void*); // Resume function of awaiting task"),n.emitDeclarationLine(" void* continuation_sm; // State machine of awaiting task"),n.emitDeclarationLine(""),n.emitDeclarationLine(" void (*__yo_resume_fn)(void*); // Resume function pointer (for lazy start at await/spawn)"),n.emitDeclarationLine(""),s){let _=Object.values(t.types).find(g=>g.type===s),d=_?_.cName:`async_capture_${s.id}`;n.emitDeclarationLine(" // Captured variables from outer scope"),n.emitDeclarationLine(` ${d} __capture;`),n.emitDeclarationLine("")}let u=l.capturedVariables.filter(_=>_.kind!=="outer");if(u.length>0){n.emitDeclarationLine(" // Local variables");for(let _ of u){let d=q(_.type,t),g=Ys(_.id,"local");n.emitDeclarationLine(` ${d} ${g}; // ${_.name}`)}n.emitDeclarationLine("")}if(l.awaitPoints.length>0){n.emitDeclarationLine(" // Await result temporaries");for(let _ of l.awaitPoints)if(!(Pe(_.resultType)||z(_.resultType)&&!_.resultType.resolvedConcreteType)){let g=_.resultType;if(_.futureType){let h=Un(_.futureType);h&&(g=h.isFuture.outputType)}let y=q(g,t);n.emitDeclarationLine(` ${y} await_result_${_.index};`)}n.emitDeclarationLine("")}if(l.awaitPoints.length>0){let _=l.awaitPoints.filter(d=>d.futureVariableId===void 0);if(_.length>0){n.emitDeclarationLine(" // Future references for awaits");for(let d of _){let g=d.expr;if(g.tag!=="FnCall")continue;let y=g.args[0],h=(p=y==null?void 0:y.$)==null?void 0:p.type;if(!h)throw new Error(`Internal error: await expression missing type info for future argument in async block ${r}`);let v=q(h,t);n.emitDeclarationLine(` ${v} await_future_${d.index};`)}n.emitDeclarationLine("")}}let c=l.awaitPoints.filter(_=>_.needsOwnCondBranchField);if(c.length>0){n.emitDeclarationLine(" // Branch tracking for cond expressions with await");for(let _ of c)n.emitDeclarationLine(` int cond_branch_${_.index}; // Which branch was taken in cond with await ${_.index}`);n.emitDeclarationLine("")}let f=l.awaitPoints.filter(_=>_.isInsideWhile);if(f.length>0){n.emitDeclarationLine(" // Loop state tracking for while loops with await");let _=l.awaitPoints.length;for(let d of f){n.emitDeclarationLine(` _Bool while_loop_${d.index}_active; // Whether while loop ${d.index} should continue`);let g=(d.whileNestingDepth??1)-1;for(let y=0;y<g;y++)n.emitDeclarationLine(` _Bool while_loop_${_}_active; // Whether outer while loop ${_} should continue`),_++}n.emitDeclarationLine("")}n.emitDeclarationLine("};"),n.emitDeclarationLine("")}function y$(e){var l;if(!e.deferredAsyncBlocks||e.deferredAsyncBlocks.length===0)return;let t=e.deferredAsyncBlocks,n=new Map;for(let u of t)n.set(u.structName,u);let r=new Map,i=new Map;for(let u of t)r.set(u.structName,new Set),i.set(u.structName,0);for(let u of t){let c=f=>{let p=r.get(f);p.has(u.structName)||(p.add(u.structName),i.set(u.structName,(i.get(u.structName)??0)+1))};for(let f of u.analysis.capturedVariables){let p;try{p=q(f.type,e)}catch{continue}let _=n.get(p);_&&_.structName!==u.structName&&c(_.structName)}for(let f of u.analysis.awaitPoints){if(f.futureVariableId!==void 0)continue;let p=f.expr;if(p.tag!=="FnCall")continue;let _=p.args[0],d=(l=_==null?void 0:_.$)==null?void 0:l.type;if(!d)continue;let g;try{g=q(d,e)}catch{continue}let y=n.get(g);y&&y.structName!==u.structName&&c(y.structName)}}let o=[];for(let[u,c]of i.entries())c===0&&o.push(u);let a=[];for(;o.length>0;){let u=o.shift();a.push(u);let c=r.get(u);if(c)for(let f of c){let p=(i.get(f)??0)-1;i.set(f,p),p===0&&o.push(f)}}let s=a.length===t.length?a.map(u=>n.get(u)).filter(Boolean):t;for(let u of s)L_({asyncBlockId:u.asyncBlockId,structName:u.structName,resultType:u.resultType,resultTypeCName:u.resultTypeCName,captureType:u.captureType,analysis:u.analysis},e)}function g$(e,t,n,r,i,o,a,s){var u;let l=s.emitter;if(l.emitLine(`// Dispose function for async block ${e} state machine`),l.emitLine("// Called by __yo_decr_rc when refcount hits 0 - do NOT call __yo_free here"),l.emitLine(`void ${n}(void* sm_ptr) {`),l.emitLine(` ${t}* sm = (${t}*)sm_ptr;`),l.emitLine(` ASYNC_DEBUG("${n}: Disposing state machine\\n");`),l.emitLine(""),i&&ut(i)){let c=Object.values(s.types).find(f=>f.type===i);if(!c)l.emitLine(" /* Error: capture struct type not found in context */");else{let f=c.cName,p=i.trait.fields.find(_=>_.label===F.___drop[0]);if(p&&p.assignedValue&&$e(p.assignedValue)){let _=(u=s.functions[p.assignedValue.funcId])==null?void 0:u.cName;_&&(l.emitLine(' ASYNC_DEBUG(" Dropping capture struct\\n");'),l.emitLine(` ${_}(sm->__capture);`))}else l.emitLine(` /* Warning: ___drop function not found for capture struct ${f} */`)}}if(l.emitLine(""),!Pe(r)&&ut(r)){let c=q(r,s);l.emitLine(" // Drop result field if it was set (state == -1 means completed)"),l.emitLine(" int final_state = sm->state;"),l.emitLine(" if (final_state == -1) {"),l.emitLine(' ASYNC_DEBUG(" Dropping result field\\n");');let f=Ri(r,s);f?l.emitLine(` ${f}(sm->result);`):l.emitLine(` /* Warning: No ___drop function found for result type ${c} */`),l.emitLine(" }")}l.emitLine("");{let c=[];for(let f of o.capturedVariables){if(f.kind!=="local"||f.isOwningTheSameRcValueAs!==void 0)continue;let _=`sm->${Ys(f.id,"local")}`;if(ot(f.type))c.push(` if ((${_}).data != NULL) { __yo_decr_rc((void*)(${_}).data); }`);else if(Fn(f.type)||En(f.type))c.push(` if (${_} != NULL) { __yo_decr_rc_atomic((void*)${_}); }`);else if(rn(f.type)||z(f.type)&&pr(f.type)){let d=Ri(f.type,s);d?c.push(` if (${_} != NULL) { ${d}(${_}); }`):c.push(` if (${_} != NULL) { __yo_decr_rc((void*)${_}); }`)}else if(ut(f.type)){let d=Ri(f.type,s);d&&c.push(` ${d}(${_});`)}}if(c.length>0){l.emitLine(" // Drop local variables on escape (state == -2)"),l.emitLine(" if (sm->state == -2) {");for(let f of c)l.emitLine(f);l.emitLine(" }")}}l.emitLine(" // Memory freed by __yo_decr_rc after this function returns"),l.emitLine("}")}function h$(e,t,n,r,i,o,a,s,l,u){let c=u.emitter;if(l){let f=Object.values(u.types).find(_=>_.type===l),p=f?f.cName:`async_capture_${l.id}`;c.emitLine(`${t}* ${r}(${p} __capture) {`)}else c.emitLine(`${t}* ${r}() {`);c.emitLine(" // Allocate async block state machine (heap-backed, ref-counted)"),c.emitLine(` ${t}* sm = (${t}*)__yo_malloc(sizeof(${t}));`),c.emitLine(` memset(sm, 0, sizeof(${t}));`),c.emitLine(""),c.emitLine(" // Initialize reference counting header"),c.emitLine(" sm->header.ref_count = 1; // Caller owns initial reference"),c.emitLine(` GC_DEBUG("AsyncBlock ${t}: Created ptr=%p RC=1\\n", (void*)sm);`),c.emitLine(" sm->header.gc_flags = 0;"),c.emitLine(" sm->header.gc_mark = YO_GC_UNMARKED;"),c.emitLine(" sm->header.gc_next = NULL;"),c.emitLine(" sm->header.gc_prev = NULL;"),c.emitLine(` sm->header.dispose_fn = (void(*)(void*))${i};`),c.emitLine(" sm->header.traverse_fn = NULL; // TODO: Add traverse for cycle detection if needed"),c.emitLine(""),c.emitLine(" sm->state = 0;"),c.emitLine(" sm->continuation_fn = NULL;"),c.emitLine(" sm->continuation_sm = NULL;"),c.emitLine(""),l&&(c.emitLine(" // Initialize captured variables"),c.emitLine(" sm->__capture = __capture;"),c.emitLine("")),c.emitLine(" // Initialize result (will be set when async block completes)"),Pe(a)?c.emitLine(" // Result is unit type, no initialization needed"):c.emitLine(` memset(&sm->result, 0, sizeof(${s}));`),c.emitLine(""),c.emitLine(` sm->__yo_resume_fn = (void(*)(void*))${n};`),c.emitLine(""),c.emitLine(" return sm;"),c.emitLine("}"),c.emitLine("")}function A_(e){if(!e.deferredAsyncBlocks||e.deferredAsyncBlocks.length===0)return;let t=e.emitter;y$(e),t.emitLine("// Deferred async block implementations");let n=0;for(;n<e.deferredAsyncBlocks.length;){let r=e.deferredAsyncBlocks[n],i=e.deferredAsyncBlocks.length,{bodyExpr:o,asyncBlockId:a,structName:s,resumeFunctionName:l,constructorName:u,disposeFunctionName:c,futureType:f,resultType:p,resultTypeCName:_,captureType:d,analysis:g}=r,y=e.stateMachineVariables,h=e.currentEvidenceParams,v=new Map;for(let $ of g.capturedVariables)v.set($.id,$);if(d)for(let $ of d.fields)v.set($.label,{id:$.label,name:$.label,type:$.type,kind:"outer",isOwningTheSameRcValueAs:void 0});e.stateMachineVariables=v;let E=T_(o,a,s,l,g,f,d,e);if(e.stateMachineVariables=y,e.currentEvidenceParams=h,t.emitLine(""),g$(a,s,c,p,d,g,E,e),t.emitLine(""),h$(a,s,l,u,c,f,p,_,d,e),t.emitLine(""),e.deferredAsyncBlocks.length>i){let $=e.deferredAsyncBlocks.slice(i);for(let C of $)L_({asyncBlockId:C.asyncBlockId,structName:C.structName,resultType:C.resultType,resultTypeCName:C.resultTypeCName,captureType:C.captureType,analysis:C.analysis},e)}n++}}function I_(e){for(let t in e.functions){let{value:n}=e.functions[t];n.body&&S_(n.body,e)}}function S_(e,t){var n,r,i,o,a;if(e&&S(e)){let s=e;if(qn(e)){let l=(n=e.$)==null?void 0:n.type;if(l&&rt(l)&&Un(l)){let f=`${((r=e.$)==null?void 0:r.variableName)||`async_block_${Date.now()}`}_state_t`;e.$&&(e.$.asyncStateMachineStructName=f),t.types[l.id]={type:l,cName:f},t.emitter.emitDeclarationLine(`typedef struct ${f}_struct ${f}; // Forward declaration for async state machine`)}}if(qn(e)){let l=(i=e.$)==null?void 0:i.type;if(l&&rt(l)&&Un(l)){let c=((o=e.$)==null?void 0:o.variableName)||`io_async_block_${Date.now()}`,f=!!((a=e.$)!=null&&a.awaitAnalysis),p=f?`${c}_state_t`:`${c}_sync_fut_t`;e.$&&(e.$.asyncStateMachineStructName=p),t.types[l.id]={type:l,cName:p},t.emitter.emitDeclarationLine(`typedef struct ${p}_struct ${p}; // Forward declaration for io.async ${f?"state machine":"sync future"}`)}}for(let l of s.args)S_(l,t)}}function N_(e,t,n){var k,b,A,I,N;let r=(k=e.$)==null?void 0:k.type;if(!r||!rt(r))return"/* Error: io.async must return a Future type */";let i=Un(r);if(!i)return"/* Error: Could not extract Future module type */";let o=i.isFuture.outputType,a=q(o,n),s=(b=e.$)==null?void 0:b.asyncStateMachineStructName;if(!s)return"/* Error: Missing sync future struct name */";let l=`${s}_dispose`,u=`${s}_resume`,c=n.emitter,f=(I=(A=e.$)==null?void 0:A.runtimeArgExprsInOrder)==null?void 0:I[0];if(!(f!=null&&f.$))return"/* Error: Missing closure argument for io.async */";let p=B(f,t,n),_=f.$.type,d,g;if(z(_)&&_.resolvedConcreteType){let M=_.resolvedConcreteType,V=n.implClosureCallMap.get(M.id);V&&(d=V.functionCName);let O=n.types[M.id];O&&(g=O.cName)}if(!d||!g)return"/* Error: no closure function or capture type for io.async sync path */";c.emitDeclarationLine(`struct ${s}_struct {`),c.emitDeclarationLine(" yo_ref_header_t header;"),c.emitDeclarationLine(" int state;"),Pe(o)?c.emitDeclarationLine(" uint8_t result;"):c.emitDeclarationLine(` ${a} result;`),c.emitDeclarationLine(" void (*continuation_fn)(void*);"),c.emitDeclarationLine(" void* continuation_sm;"),c.emitDeclarationLine(" void (*__yo_resume_fn)(void*);"),c.emitDeclarationLine(` ${g} __capture;`),c.emitDeclarationLine("};"),c.emitDeclarationLine("");let y="";for(let M in n.functions){let V=n.functions[M];if(V.cName===d){let O=An(V.value.type);O.length>0&&(y=", "+O.map(W=>`(void*)sm->__capture.${W.fieldPath.join(".")}`).join(", "));break}}c.emitDeclarationLine(`void ${u}(void* ptr) {`),c.emitDeclarationLine(` ${s}* sm = (${s}*)ptr;`),Pe(o)?c.emitDeclarationLine(` ${d}(&sm->__capture${y});`):c.emitDeclarationLine(` sm->result = ${d}(&sm->__capture${y});`),y&&(c.emitDeclarationLine(" if (__yo_effect_escaped) {"),c.emitDeclarationLine(" __yo_effect_escaped = 0;"),c.emitDeclarationLine(" sm->state = -2;"),c.emitDeclarationLine(" return;"),c.emitDeclarationLine(" }")),c.emitDeclarationLine(" sm->state = -1;"),c.emitDeclarationLine(" void (*continuation)(void*) = sm->continuation_fn;"),c.emitDeclarationLine(" if (continuation) {"),c.emitDeclarationLine(" void* cont_sm = sm->continuation_sm;"),c.emitDeclarationLine(" continuation(cont_sm);"),c.emitDeclarationLine(" }"),c.emitDeclarationLine(" __yo_decr_rc(ptr);"),c.emitDeclarationLine("}"),c.emitDeclarationLine("");let h=f.$.captureType,v=h&&ut(h)?Ri(h,n):void 0,E=h&&ut(h)?ti(h,n):void 0,$=Ri(o,n);c.emitDeclarationLine(`void ${l}(void* ptr) {`),(v||$)&&(c.emitDeclarationLine(` ${s}* sm = (${s}*)ptr;`),v&&(c.emitDeclarationLine(" // Drop captured variables (future owns its references)"),c.emitDeclarationLine(` ${v}(sm->__capture);`)),$&&(c.emitDeclarationLine(" if (sm->state == -1) {"),c.emitDeclarationLine(` ${$}(sm->result);`),c.emitDeclarationLine(" }"))),c.emitDeclarationLine("}"),c.emitDeclarationLine("");let C=((N=e.$)==null?void 0:N.variableName)||"__io_async_result",w=Jt(r,C,n);return c.emitLine(`${t}${w} = (${s}*)__yo_malloc(sizeof(${s}));`),c.emitLine(`${t}memset(${C}, 0, sizeof(${s}));`),c.emitLine(`${t}${C}->header.ref_count = 1;`),c.emitLine(`${t}${C}->header.gc_flags = 0;`),c.emitLine(`${t}${C}->header.gc_mark = YO_GC_UNMARKED;`),c.emitLine(`${t}${C}->header.gc_next = NULL;`),c.emitLine(`${t}${C}->header.gc_prev = NULL;`),c.emitLine(`${t}${C}->header.dispose_fn = (void(*)(void*))${l};`),c.emitLine(`${t}${C}->header.traverse_fn = NULL;`),c.emitLine(`${t}${C}->__capture = ${p};`),E&&c.emitLine(`${t}${C}->__capture = ${E}(${C}->__capture);`),c.emitLine(`${t}${C}->state = 0;`),c.emitLine(`${t}${C}->__yo_resume_fn = ${u};`),c.emitLine(`${t}${C}->continuation_fn = NULL;`),c.emitLine(`${t}${C}->continuation_sm = NULL;`),C}var Kc=j(()=>{Jr();Gt();ce();Ae();Je();ge();Cu();qa();zt();ku();vr();fn()});function x_(e,t){for(let i=0;i<e.fields.length;i++){let o=e.fields[i];$e(o)&&(to(o.type,t),na(o.body,t))}let n=new Set,r=!0;for(;r;){r=!1;for(let i in t.functions){if(n.has(i))continue;n.add(i),r=!0;let o=t.functions[i];if(to(o.value.type,t),o.value.specializedType&&to(o.value.specializedType,t),na(o.value.body,t),o.value.calledComptimeFunctionCaches)for(let a of o.value.calledComptimeFunctionCaches)a.value&&a.value.type&&zn(a.value.type,t),na(a.body,t)}}}function to(e,t){for(let n of e.parameters)zn(n.type,t);for(let n of e.forallParameters)zn(n.type,t);zn(e.return.type,t)}function na(e,t){var n;if(e.$&&e.$.type&&zn(e.$.type,t),e.$&&e.$.value&&$e(e.$.value)){let r=e.$.value;r.isControlFunction?(to(r.type,t),jn(r.body,t)):t.functions[r.funcId]||r.type.parameters.map(a=>a.type).some(a=>z(a)&&rt(a)&&!a.resolvedConcreteType)||(t.functions[r.funcId]={value:r,cName:ve(r.funcId)},to(r.type,t),jn(r.body,t))}if(e.$&&e.$.deferredDropExpressions&&e.$.deferredDropExpressions.length>0)for(let r of e.$.deferredDropExpressions)na(r,t);if(e.$&&e.$.macroExpansion&&na(e.$.macroExpansion,t),e.$&&e.$.runtimeDestructurings)for(let{type:r}of e.$.runtimeDestructurings)zn(r,t);if(e.$&&e.$.captureType&&ze(e.$.captureType)){let r=e.$.captureType;if(!t.types[r.id]){t.types[r.id]={type:r,cName:`yo_${r.id}`};for(let i of r.fields)zn(i.type,t);for(let i of r.trait.fields)if(i.assignedValue&&$e(i.assignedValue)){let o=i.assignedValue;t.functions[o.funcId]||(t.functions[o.funcId]={value:o,cName:o.funcId},to(o.type,t),jn(o.body,t))}}}switch(e.tag){case"FnCall":if(T(e,D.test))break;na(e.func,t);for(let r of e.args)na(r,t);break;case"Atom":(n=e.$)!=null&&n.value&&Y(e.$.value)&&zn(e.$.value.value,t);break}}function zn(e,t){if(!t.types[e.id]){if(z(e)&&Qn(e)){if(e.resolvedConcreteType){zn(e.resolvedConcreteType,t);return}let n=or(e);n&&zn(n,t);return}if(z(e)&&rt(e)){let n=Un(e);n&&zn(n.isFuture.outputType,t);return}if(z(e)&&e.resolvedConcreteType){zn(e.resolvedConcreteType,t);return}if(!lt(e)){if(ze(e)||ln(e)||qe(e)||st(e)||ot(e)||Qe(e)||ht(e)||Rt(e)||Fn(e)||En(e)){let n=Rt(e)?q(e,t):`yo_${e.id}`;if(t.types[e.id]={type:e,cName:n},ze(e))for(let r of e.fields)zn(r.type,t);if(qe(e)){for(let r of e.variants)if(r.fields)for(let i of r.fields)zn(i.type,t)}if(ln(e))for(let r of e.fields)zn(r.type,t);if(ot(e)){let r=e;for(let i of r.requiredTraits)zn(i.traitType,t)}if(Fn(e)){let r=e;zn(r.childType,t),q(r,t)}if(En(e)){let r=e;zn(r.childType,t),q(r,t)}if(Rt(e)&&zn(e.childType,t),Qe(e)||ht(e)){for(let r of e.fields)zn(r.type,t);for(let r of e.fields)if(r.assignedValue&&$e(r.assignedValue)){let i=r.assignedValue;t.functions[i.funcId]||(t.functions[i.funcId]={value:i,cName:ve(i.funcId)},to(i.type,t),jn(i.body,t))}else if(r.assignedValue&&(At(r.assignedValue)||mn(r.assignedValue))){let i=r.assignedValue;js(i,t)}}}else if(at(e)){let n=e,r=n.childType,i=n.length;if(wt(i)){zn(r,t);let o=q(r,t),a=`Array_${ve(o)}_${i.value}`;t.arrayStructTypes.has(a)||t.arrayStructTypes.set(a,{childType:o,length:typeof i.value=="bigint"?Number(i.value):i.value}),t.types[e.id]={type:e,cName:a}}}else if(_t(e)){if(zn(e.childType,t),Rt(e.childType)){let r=e.childType.childType;zn(r,t);let i=q(r,t),o=`Slice_${ve(i)}`;t.sliceStructTypes.has(o)||t.sliceStructTypes.set(o,{childType:i})}t.types[e.id]={type:e,cName:q(e,t)}}else f_.has(e.tag)&&(t.types[e.id]={type:e,cName:q(e,t)});e.trait&&zn(e.trait,t)}}}var Xc=j(()=>{Gt();ce();Ae();Je();ge();zs();Qc();zt()});function ra(e){var t,n,r;if(e.$&&e.$.value&&Ge(e.$.value)&&!(te(e.$.type)&&e.$.type.isExtern)){if(!Pe(e.$.type))return!0}if(S(e)){if(ra(e.func))return!0;for(let i of e.args)if(!((t=i.$)!=null&&t.type&&Pe(i.$.type))&&ra(i))return!0}if(e.$&&e.$.macroExpansion){if(e.$.type&&Pe(e.$.type))return!1;if(ra(e.$.macroExpansion))return!0}if((n=e.$)!=null&&n.deferredDupExpressions){for(let i of e.$.deferredDupExpressions)if(ra(i))return!0}if((r=e.$)!=null&&r.deferredDropExpressions){for(let i of e.$.deferredDropExpressions)if(ra(i))return!0}return!1}function js(e,t){for(let n=0;n<e.fields.length;n++){let r=e.fields[n],i=e.type.fields[n];if($e(r)){let o=i.label;if(o==="main")t.functions[r.funcId]={value:r,cName:"__yo_user_main"};else if(t.isLibrary)if(t.currentModuleId&&r.funcId.startsWith(`fn_${t.currentModuleId}_`)){let s=ve(o);t.functions[r.funcId]={value:r,cName:s},t.exportedFunctionLabels||(t.exportedFunctionLabels=new Map),t.exportedFunctionLabels.set(r.funcId,o)}else t.functions[r.funcId]={value:r,cName:ve(r.funcId)};else t.functions[r.funcId]={value:r,cName:ve(r.funcId)};jn(r.body,t)}}}function V_(e,t){for(let n=0;n<e.fields.length;n++){let r=e.fields[n];r&&$e(r)?t.functions[r.funcId]||(r.isModuleEffectMember=!0,t.functions[r.funcId]={value:r,cName:ve(r.funcId)},jn(r.body,t)):r&&At(r)&&V_(r,t)}}function jn(e,t){var i,o,a,s,l,u,c,f,p,_,d;if((i=e.$)!=null&&i.value&&At(e.$.value)){let g=e.$.value;V_(g,t)}if(S(e)&&T(e,D.test)||S(e)&&T(e,F.comptime_expect_error))return;if(e.$&&e.$.macroExpansion&&jn(e.$.macroExpansion,t),(o=e.$)!=null&&o.effectAnalysis){let g=e.$.effectAnalysis.handlerValue;g&&$e(g)&&jn(g.body,t)}if(e.$&&e.$.closureFunctionValue){let g=e.$.closureFunctionValue;t.functions[g.funcId]||(t.functions[g.funcId]={value:g,cName:ve(g.funcId)},jn(g.body,t))}if(S(e)&&e.$&&e.$.dynCallTraitValues&&e.$.dynCallTraitValues.length>0){let g=e.$.type,y=e.args[0];if(ot(g)&&y&&((a=y.$)!=null&&a.type)){let h=y.$.type,v=e.$.dynCallTraitValues;if(v.length>0&&(rn(h)||Ar(h))){let E=Ar(h)?h.fields[0].type:h,$=`${E.id}_${g.id}`;t.dynImpls.set($,{dynType:g,concreteType:E,dataType:h,traitValues:v})}}}if(S(e)){let g=(s=e.func.$)==null?void 0:s.type,y=(l=e.func.$)==null?void 0:l.value;if(e.func.token.value==="?=")return;if(te(g)){if($e(y)&&y.isControlFunction){jn(y.body,t);for(let h of e.args)jn(h,t);return}if($e(y)){if(y.type.return.isCompileTimeOnly||Ec(y)&&!y.specializedType)return;if(y.specializedType&&wi(y.specializedType)&&An(y.specializedType).length===0){jn(e.func,t);for(let v of e.args)jn(v,t);return}if(!t.functions[y.funcId]){let h=!1;if(ra(y.body)){let v=y.specializedType??y.type;if(h=v.implicitParameters.length>0&&(An(v).length>0||!wi(y.type)&&y.type.implicitParameters.length>0),!h)return}if(!h&&!(An(y.specializedType??y.type).length>0)&&(y.specializedType??y.type).parameters.map(C=>C.type).some(C=>z(C)&&rt(C)&&!C.resolvedConcreteType))return;t.functions[y.funcId]={value:y,cName:ve(y.funcId)},jn(y.body,t)}}else if(g.isExtern==="c"){let h=g.externName?g.externName:H(e.func)?e.func.token.value:g.id;t.externFunctions[g.id]={type:g,cName:h}}else if(g.isExtern==="yo"){let h=g.externName;if(!(h&&h.startsWith("__yo_"))){let v=h?ve(h):H(e.func)?ve(e.func.token.value):ve(g.id);t.externFunctions[g.id]={type:g,cName:v}}}}jn(e.func,t);for(let h of e.args)jn(h,t)}let n=(u=e.$)==null?void 0:u.type,r=(c=e.$)==null?void 0:c.value;if(te(n)){if($e(r)&&r.isControlFunction){if(r.isModuleEffectMember=!0,t.functions[r.funcId]||(t.functions[r.funcId]={value:r,cName:ve(r.funcId)}),r.specializedFunctionCaches)for(let g of r.specializedFunctionCaches){let y=g.specializedFunction;y&&!t.functions[y.funcId]&&(y.isModuleEffectMember=!0,t.functions[y.funcId]={value:y,cName:ve(y.funcId)},jn(y.body,t))}jn(r.body,t);return}if($e(r)){if(Ec(r)&&!r.specializedFunctionCaches||t.functions[r.funcId])return;if(ra(r.body))return;t.functions[r.funcId]={value:r,cName:ve(r.funcId)},jn(r.body,t)}}if(Y((f=e.$)==null?void 0:f.value)&&zn(e.$.value.value,t),(p=e.$)!=null&&p.deferredDupExpressions)for(let g of e.$.deferredDupExpressions)jn(g,t);if((_=e.$)!=null&&_.deferredDropExpressions)for(let g of e.$.deferredDropExpressions)jn(g,t);if((d=e.$)!=null&&d.dynCallTraitValues)for(let g of e.$.dynCallTraitValues)js(g,t)}function D_(e){let t=F.dispose[0];for(let n in e.types){let{type:r}=e.types[n];if(!ze(r)||!r.isReferenceSemantics)continue;let i=Mi({concreteType:r,methodName:t,env:r.env});for(let o of i)if(o.value&&$e(o.value)){let a=o.value;if(e.functions[a.funcId])continue;a.funcName||(a.funcName=t),e.functions[a.funcId]={value:a,cName:ve(a.funcId)},to(a.type,e),jn(a.body,e)}}}var Qc=j(()=>{Gt();Zi();ce();Ae();ge();Xc();zt();qa()});function M_(e){var r;let t=e.emitter,n=new Set;for(let[,i]of e.dynImpls){let o=((r=e.types[i.dynType.id])==null?void 0:r.cName)||`yo_dyn_${i.dynType.id}`;n.has(o)||(n.add(o),t.emitLine(`${o} __yo_dup_${o}(${o} dyn) {`),t.emitLine(" if (dyn.data) {"),t.emitLine(" __yo_incr_rc(dyn.data);"),t.emitLine(" }"),t.emitLine(" return dyn;"),t.emitLine("}"),t.emitLine(""),t.emitLine(`void __yo_drop_${o}(${o} dyn) {`),t.emitLine(" if (dyn.data) {"),t.emitLine(" __yo_decr_rc(dyn.data);"),t.emitLine(" }"),t.emitLine("}"),t.emitLine(""))}}function O_(e){var r,i,o;let t=e.emitter;if(e.dynImpls.size===0)return;t.emitLine(""),t.emitLine("// === Dyn Box Functions ==="),t.emitLine("// Constructor and dispose functions for dyn boxes"),t.emitLine("");let n=new Set;for(let[,a]of e.dynImpls){let s=z(a.concreteType)&&a.concreteType.resolvedConcreteType?a.concreteType.resolvedConcreteType:a.concreteType,u=`yo_dyn_box_${((r=e.types[s.id])==null?void 0:r.cName)||`unknown_${s.id}`}`;if(n.has(u))continue;n.add(u);let c=q(s,e);t.emitLine(`${u}* __yo_new_${u}(${c} value) {`),t.emitLine(` ${u}* box = (${u}*)__yo_malloc(sizeof(${u}));`),t.emitLine(" box->header.ref_count = 1;"),t.emitLine(" box->header.gc_flags = 0;"),t.emitLine(" box->header.gc_mark = YO_GC_UNMARKED;"),t.emitLine(" box->header.gc_next = NULL;"),t.emitLine(" box->header.gc_prev = NULL;"),t.emitLine(` box->header.dispose_fn = __yo_dispose_${u};`),t.emitLine(" box->header.traverse_fn = NULL; // TODO: Set if value contains GC types"),t.emitLine(" box->value = value;"),t.emitLine(" return box;"),t.emitLine("}"),t.emitLine(""),t.emitLine(`void __yo_dispose_${u}(void* ptr) {`),t.emitLine(` ${u}* box = (${u}*)ptr;`);let p=(i=(z(a.concreteType)&&a.concreteType.resolvedConcreteType?a.concreteType.resolvedConcreteType:a.concreteType).trait)==null?void 0:i.fields.find(_=>_.label===F.___drop[0]);if(p&&p.assignedValue&&$e(p.assignedValue)){let _=(o=e.functions[p.assignedValue.funcId])==null?void 0:o.cName;_&&t.emitLine(` ${_}(box->value);`)}t.emitLine("}"),t.emitLine("")}}function R_(e){var n,r,i,o;let t=e.emitter;if(e.dynImpls.size!==0){t.emitDeclarationLine(""),t.emitDeclarationLine("// === Dyn Wrapper Functions ==="),t.emitDeclarationLine("// Wrappers that unwrap boxed values and call impl methods"),t.emitDeclarationLine("");for(let[a,s]of e.dynImpls){let l=s.dataType,u=new Set([F.___dup[0],F.___drop[0],F.___dispose[0],F.dispose[0]]);for(let{traitType:c}of s.dynType.requiredTraits){if(!wn(c))continue;let f=c.isFn.callType,p=q(f.return.type,e),_=`yo_wrap_${a}_call`,d=["void* self_ptr"];for(let g=0;g<f.parameters.length;g++){let y=f.parameters[g],h=q(y.type,e);d.push(`${h} arg${g+1}`)}if(t.emitDeclarationLine(`static ${p} ${_}(${d.join(", ")}) {`),Ar(l)){let g=((n=e.types[l.id])==null?void 0:n.cName)||`unknown_${l.id}`,y=ve(l.fields[0].label);t.emitDeclarationLine(` ${g}* box = (${g}*)self_ptr;`);let h=l.fields[0].type,v=z(h)&&h.resolvedConcreteType?h.resolvedConcreteType:h,E=e.implClosureCallMap.get(v.id),$=(()=>{var w;if(E)return E.functionCName;for(let[,k]of Object.entries(e.functions)){let A=k.value.closureInfo;if(((w=A==null?void 0:A.captureType)==null?void 0:w.id)===v.id)return k.cName}})(),C=[];if($){C.push(`(void*)&box->${y}`);for(let w=0;w<f.parameters.length;w++)C.push(`arg${w+1}`);Wi(f.return.type)?t.emitDeclarationLine(` ${$}(${C.join(", ")});`):t.emitDeclarationLine(` return ${$}(${C.join(", ")});`)}else{C.push(`box->${y}.data`);for(let w=0;w<f.parameters.length;w++)C.push(`arg${w+1}`);Wi(f.return.type)?t.emitDeclarationLine(` box->${y}.call(${C.join(", ")});`):t.emitDeclarationLine(` return box->${y}.call(${C.join(", ")});`)}}else{t.emitDeclarationLine(" (void)self_ptr; /* Dyn(Fn): expected Box(...) data */");for(let g=0;g<f.parameters.length;g++)t.emitDeclarationLine(` (void)arg${g+1};`);Wi(f.return.type)?t.emitDeclarationLine(" return;"):(t.emitDeclarationLine(` ${p} zero = (${p})0;`),t.emitDeclarationLine(" return zero;"))}t.emitDeclarationLine("}"),t.emitDeclarationLine("")}for(let c=0;c<s.dynType.requiredTraits.length;c++){let{traitType:f}=s.dynType.requiredTraits[c];if(wn(f))continue;let p=s.traitValues[c];if(!p){t.emitDeclarationLine(`/* Warning: Module value missing for module ${c} */`);continue}let d=p.type.fields;for(let g=0;g<d.length;g++){let y=d[g];if(y.label==="Self"||u.has(y.label))continue;let h=p.fields[g];if(!h||!$e(h)){t.emitDeclarationLine(`/* Warning: Module field ${y.label} is not a function value */`);continue}let v=y.type;if(!te(v)){t.emitDeclarationLine(`/* Warning: Module field ${y.label} is not a function type */`);continue}let E=h.funcId,$=(r=e.functions[E])==null?void 0:r.cName;if(!$){t.emitDeclarationLine(`/* Warning: Impl function for ${y.label} not found */`);continue}let C=`yo_wrap_${a}_${y.label}`,w=q(v.return.type,e),k=["void* self_ptr"];for(let N=1;N<v.parameters.length;N++){let M=v.parameters[N],V=q(M.type,e);k.push(`${V} arg${N}`)}t.emitDeclarationLine(`static ${w} ${C}(${k.join(", ")}) {`);let b=(i=v.parameters[0])==null?void 0:i.type,A;if(Ar(l)){let N=((o=e.types[l.id])==null?void 0:o.cName)||`unknown_${l.id}`,M=ve(l.fields[0].label);t.emitDeclarationLine(` ${N}* box = (${N}*)self_ptr;`),b&&_t(b)?A=`&box->${M}`:A=`box->${M}`}else{let N=q(s.concreteType,e);t.emitDeclarationLine(` ${N} concrete_value = (${N})self_ptr;`),b&&_t(b)?A="&concrete_value":A="concrete_value"}let I=[A];for(let N=1;N<v.parameters.length;N++)I.push(`arg${N}`);Wi(v.return.type)?t.emitDeclarationLine(` ${$}(${I.join(", ")});`):t.emitDeclarationLine(` return ${$}(${I.join(", ")});`),t.emitDeclarationLine("}"),t.emitDeclarationLine("")}}}}}function P_(e){var r,i,o;let t=e.emitter;if(e.dynImpls.size===0)return;t.emitDeclarationLine(""),t.emitDeclarationLine("// === Dyn TypeId Statics ==="),t.emitDeclarationLine("// Unique static per concrete type \u2014 address is the runtime TypeId"),t.emitDeclarationLine("");let n=new Set;e.typeIdStatics||(e.typeIdStatics=new Map);for(let[,a]of e.dynImpls){let s=z(a.concreteType)&&a.concreteType.resolvedConcreteType?a.concreteType.resolvedConcreteType:a.concreteType,l=((r=e.types[s.id])==null?void 0:r.cName)||`unknown_${s.id}`,u=`yo_typeid_${l}`;!n.has(u)&&!e.typeIdStatics.has(s.id)&&(n.add(u),e.typeIdStatics.set(s.id,u),t.emitDeclarationLine(`static const char ${u} = 0; // TypeId for ${l}`))}t.emitDeclarationLine(""),t.emitDeclarationLine("// === Dyn Static Vtables ==="),t.emitDeclarationLine("// Static vtables for dynamic dispatch"),t.emitDeclarationLine("");for(let[a,s]of e.dynImpls){let l=((i=e.types[s.dynType.id])==null?void 0:i.cName)||`yo_dyn_${s.dynType.id}`,u=z(s.concreteType)&&s.concreteType.resolvedConcreteType?s.concreteType.resolvedConcreteType:s.concreteType,c=((o=e.types[u.id])==null?void 0:o.cName)||`unknown_${u.id}`,f=`yo_vtable_${a}`,p=`${l}_vtable`,_=`yo_typeid_${c}`;t.emitDeclarationLine(`// Vtable for impl(${c}, ${s.dynType.requiredTraits.map(({traitType:y})=>y.typeName||"?").join(" + ")})`),t.emitDeclarationLine(`static const ${p} ${f} = {`),t.emitDeclarationLine(` .__yo_type_id = (uintptr_t)&${_},`);let d=new Set,g=new Set([F.___dup[0],F.___drop[0],F.___dispose[0],F.dispose[0]]);for(let{traitType:y}of s.dynType.requiredTraits){if(wn(y)){let h=`yo_wrap_${a}_call`;t.emitDeclarationLine(` .call = ${h},`),d.add("call");continue}for(let h of y.fields)if(h.label!=="Self"&&!g.has(h.label)&&!d.has(h.label)&&(d.add(h.label),te(h.type))){let v=h.type;if(v.parameters.length>0){let E=v.parameters[0];if(E&&E.label==="self"){let $=`yo_wrap_${a}_${h.label}`;t.emitDeclarationLine(` .${ve(h.label)} = ${$},`)}}}}t.emitDeclarationLine("};"),t.emitDeclarationLine("")}}var U_=j(()=>{ce();Ae();ge();zt()});function z_(e){e.emitLine(`
196
196
  // ============================================================================
197
197
  // Async/Await Runtime - Single-Threaded Cooperative Scheduler
198
198
  // ============================================================================
@@ -9532,7 +9532,7 @@ static int __yo_poll_and_fs_event_tick(void) {
9532
9532
  }
9533
9533
 
9534
9534
  #endif // _WIN32
9535
- `)}var X_=j(()=>{});function Q_(e,t){z_(e),Y_(e),H_(e),K_(e),G_(e)}var Z_=j(()=>{B_();W_();q_();j_();X_()});function v$(e,t,n,r){var i,o;if((i=e.$)!=null&&i.deferredDupExpressions&&e.$.deferredDupExpressions.length>0){jt(e,n,r);let a=e.$.deferredDupExpressions[0];if(S(a)&&((o=a.$)!=null&&o.variableName))return et(a.$.variableName,a.$.env)}return t}function T$(e,t,n){var r,i,o;if((r=e.$)!=null&&r.deferredDupExpressions&&e.$.deferredDupExpressions.length>0){if((i=e.$)!=null&&i.variableName){let s=e.$.variableName;e.$.variableName=void 0;let l=B(e,t,n);e.$.variableName=s;let u=q(e.$.type,n),c=ve(s);c!==l&&n.emitter.emitLine(`${t}${u} ${c} = ${l};`)}else{let s=B(e,t,n);n.emitter.emitLine(`${t}${s};`)}jt(e,t,n);let a=e.$.deferredDupExpressions[0];if(S(a)&&((o=a.$)!=null&&o.variableName))return et(a.$.variableName,a.$.env)}return B(e,t,n)}function E$(e){var t,n;if(S(e)&&T(e,F.___drop)&&e.args.length>=1){let r=e.args[0];if(r&&H(r))return et(r.token.value,(t=r.$)==null?void 0:t.env)}if(S(e)&&e.args.length===0&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[1])&&e.func.args[1].token.value===F.___drop[0]&&H(e.func.args[0])){let r=e.func.args[0];return et(r.token.value,(n=r.$)==null?void 0:n.env)}}function Tr(e,t,n,r=!1,i=!1,o=!1){var a,s;if(t.pendingDeferredDrops&&t.pendingDeferredDrops.length>0){let l=new Set;if(!i&&((a=n.$)!=null&&a.deferredDropExpressions))for(let f of n.$.deferredDropExpressions){let p=Yr(f);p&&l.add(p)}let u=t.effectSmConsumedArgCNames,c=(s=n.$)!=null&&s.env&&!o?t.pendingDeferredDrops.filter(f=>{let p=Yr(f);return!p||l.has(p)?!1:ue(n.$.env,p).length>0}):t.pendingDeferredDrops.filter(f=>{let p=Yr(f);if(!p||l.has(p))return!1;if(u&&u.size>0){let _=E$(f);if(_&&u.has(_))return!1}return!0});if(c.length>0){let f=r?"Drop local variables before early completion":"Drop local variables before early return";t.emitter.emitLine(`${e}// ${f}`);for(let p of c){let _=B(p,e,t);_&&t.emitter.emitLine(`${e}${_};`)}}}}function Ei(e,t,n,r=!1){var o;if(!t.consumedVarPendingDrops||t.consumedVarPendingDrops.length===0)return;let i=(o=n.$)!=null&&o.env&&!r?t.consumedVarPendingDrops.filter(a=>{let s=Yr(a);return s?ue(n.$.env,s).length>0:!1}):[...t.consumedVarPendingDrops];if(i.length>0){t.emitter.emitLine(`${e}// Drop consumed variables (escape propagation)`);for(let a of i){let s=B(a,e,t);s&&t.emitter.emitLine(`${e}${s};`)}}}function J_(e,t,n){var o,a,s,l,u,c;let r=n;if(r.continuationVariables){let f=r.continuationVariables.get("resume");if(f&&"directReturnVar"in f){if(!f.isUnitReturn){let p=e.args[0];if(p){let _=B(p,t,n);_&&n.emitter.emitLine(`${t}${f.directReturnVar} = ${_};`)}}return Tr(t,r,e,!1,!0),f.directExitLabel&&n.emitter.emitLine(`${t}goto ${f.directExitLabel};`),""}}let i=e.args[0];if(i){if(!e.$)throw new Error("Internal error: return expression missing metadata");if(!e.$.variableName&&!Pe(e.$.type))return"// Error: return expression missing temporary variable name";let f,p=!1;if(r.inAsyncStateMachine&&((o=i.$)!=null&&o.variableName)){let h=i.$.variableName;i.$.variableName=void 0,f=B(i,t,n),i.$.variableName=h,p=!0}else if((a=i.$)!=null&&a.variableName&&((s=i.$)!=null&&s.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){let h=i.$.variableName;i.$.variableName=void 0;let v=B(i,t,n);i.$.variableName=h;let E=q(i.$.type,n),$=et(h,i.$.env);$!==v&&n.emitter.emitLine(`${t}${E} ${$} = ${v};`),f=$}else f=B(i,t,n);let _=!1;if((l=i.$)!=null&&l.deferredDupExpressions&&i.$.deferredDupExpressions.length>0){jt(i,t,r);let h=i.$.deferredDupExpressions[0];S(h)&&((u=h.$)!=null&&u.variableName)&&(f=et(h.$.variableName,h.$.env),_=!0)}let d=q(e.$.type,n),g=e.$.variableName?et(e.$.variableName,e.$.env):void 0;if(!_&&!Pe(e.$.type)&&g&&g!==f&&n.emitter.emitLine(`${t}${d} ${g} = ${f};`),e.$.deferredDropExpressions&&bn(e,t,n),r.inAsyncStateMachine){let h=r.inAsyncStateMachine.futureType,E=Un(h).isFuture.outputType,$=Pe(E);Tr(t,r,e,!0),n.emitter.emitLine(`${t}// Final state - complete the result Future`);let C;return $||(C=e.$.variableName&&p?e.$.variableName:e.$.variableName||f),Ji({emitter:n.emitter,indent:t,resultCode:C,debugLabel:n.currentFunctionName}),""}return Tr(t,r,e),Pe(e.$.type)?"return":`return ${_?f:g??f}`}else{if((c=e.$)!=null&&c.deferredDropExpressions&&bn(e,t,n),r.inAsyncStateMachine){let f=r.inAsyncStateMachine.futureType,_=Un(f).isFuture.outputType,d=Pe(_);Tr(t,r,e,!0),n.emitter.emitLine(`${t}// Final state - complete the result Future (early unit return)`);let g=d?void 0:`(${q(_,n)}){0}`;return Ji({emitter:n.emitter,indent:t,resultCode:g,debugLabel:n.currentFunctionName}),""}return Tr(t,r,e),"return"}}function ed(e,t,n){let r=n;switch(e.tag){case"Atom":{let i=Ha(e,n),o=v$(e,i,t,r);n.emitter.emitLine(`${t}return ${o};`);break}case"FnCall":{if(T(e,D.return)){let i=B(e,t,n);n.emitter.emitLine(`${t}${i};`)}else{let i=T$(e,t,r);n.emitter.emitLine(`${t}return ${i};`)}break}}}var Ks=j(()=>{ft();Gt();ce();Ae();zt();ea();ku();vr();fn()});function td(e,t){e.emitLine(`
9535
+ `)}var X_=j(()=>{});function Q_(e,t){z_(e),Y_(e),H_(e),K_(e),G_(e)}var Z_=j(()=>{B_();W_();q_();j_();X_()});function v$(e,t,n,r){var i,o;if((i=e.$)!=null&&i.deferredDupExpressions&&e.$.deferredDupExpressions.length>0){jt(e,n,r);let a=e.$.deferredDupExpressions[0];if(S(a)&&((o=a.$)!=null&&o.variableName))return et(a.$.variableName,a.$.env)}return t}function T$(e,t,n){var r,i,o;if((r=e.$)!=null&&r.deferredDupExpressions&&e.$.deferredDupExpressions.length>0){if((i=e.$)!=null&&i.variableName){let s=e.$.variableName;e.$.variableName=void 0;let l=B(e,t,n);e.$.variableName=s;let u=q(e.$.type,n),c=ve(s);c!==l&&n.emitter.emitLine(`${t}${u} ${c} = ${l};`)}else{let s=B(e,t,n);n.emitter.emitLine(`${t}${s};`)}jt(e,t,n);let a=e.$.deferredDupExpressions[0];if(S(a)&&((o=a.$)!=null&&o.variableName))return et(a.$.variableName,a.$.env)}return B(e,t,n)}function E$(e){var t,n;if(S(e)&&T(e,F.___drop)&&e.args.length>=1){let r=e.args[0];if(r&&H(r))return et(r.token.value,(t=r.$)==null?void 0:t.env)}if(S(e)&&e.args.length===0&&S(e.func)&&T(e.func,".",2)&&H(e.func.args[1])&&e.func.args[1].token.value===F.___drop[0]&&H(e.func.args[0])){let r=e.func.args[0];return et(r.token.value,(n=r.$)==null?void 0:n.env)}}function Tr(e,t,n,r=!1,i=!1,o=!1){var a,s;if(t.pendingDeferredDrops&&t.pendingDeferredDrops.length>0){let l=new Set;if(!i&&((a=n.$)!=null&&a.deferredDropExpressions))for(let f of n.$.deferredDropExpressions){let p=Yr(f);p&&l.add(p)}let u=t.effectSmConsumedArgCNames,c=(s=n.$)!=null&&s.env&&!o?t.pendingDeferredDrops.filter(f=>{let p=Yr(f);return!p||l.has(p)?!1:ue(n.$.env,p).length>0}):t.pendingDeferredDrops.filter(f=>{let p=Yr(f);if(!p||l.has(p))return!1;if(u&&u.size>0){let _=E$(f);if(_&&u.has(_))return!1}return!0});if(c.length>0){let f=r?"Drop local variables before early completion":"Drop local variables before early return";t.emitter.emitLine(`${e}// ${f}`);for(let p of c){let _=B(p,e,t);_&&t.emitter.emitLine(`${e}${_};`)}}}}function $i(e,t,n,r=!1){var o;if(!t.consumedVarPendingDrops||t.consumedVarPendingDrops.length===0)return;let i=(o=n.$)!=null&&o.env&&!r?t.consumedVarPendingDrops.filter(a=>{let s=Yr(a);return s?ue(n.$.env,s).length>0:!1}):[...t.consumedVarPendingDrops];if(i.length>0){t.emitter.emitLine(`${e}// Drop consumed variables (escape propagation)`);for(let a of i){let s=B(a,e,t);s&&t.emitter.emitLine(`${e}${s};`)}}}function J_(e,t,n){var o,a,s,l,u,c;let r=n;if(r.continuationVariables){let f=r.continuationVariables.get("resume");if(f&&"directReturnVar"in f){if(!f.isUnitReturn){let p=e.args[0];if(p){let _=B(p,t,n);_&&n.emitter.emitLine(`${t}${f.directReturnVar} = ${_};`)}}return Tr(t,r,e,!1,!0),f.directExitLabel&&n.emitter.emitLine(`${t}goto ${f.directExitLabel};`),""}}let i=e.args[0];if(i){if(!e.$)throw new Error("Internal error: return expression missing metadata");if(!e.$.variableName&&!Pe(e.$.type))return"// Error: return expression missing temporary variable name";let f,p=!1;if(r.inAsyncStateMachine&&((o=i.$)!=null&&o.variableName)){let h=i.$.variableName;i.$.variableName=void 0,f=B(i,t,n),i.$.variableName=h,p=!0}else if((a=i.$)!=null&&a.variableName&&((s=i.$)!=null&&s.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){let h=i.$.variableName;i.$.variableName=void 0;let v=B(i,t,n);i.$.variableName=h;let E=q(i.$.type,n),$=et(h,i.$.env);$!==v&&n.emitter.emitLine(`${t}${E} ${$} = ${v};`),f=$}else f=B(i,t,n);let _=!1;if((l=i.$)!=null&&l.deferredDupExpressions&&i.$.deferredDupExpressions.length>0){jt(i,t,r);let h=i.$.deferredDupExpressions[0];S(h)&&((u=h.$)!=null&&u.variableName)&&(f=et(h.$.variableName,h.$.env),_=!0)}let d=q(e.$.type,n),g=e.$.variableName?et(e.$.variableName,e.$.env):void 0;if(!_&&!Pe(e.$.type)&&g&&g!==f&&n.emitter.emitLine(`${t}${d} ${g} = ${f};`),e.$.deferredDropExpressions&&bn(e,t,n),r.inAsyncStateMachine){let h=r.inAsyncStateMachine.futureType,E=Un(h).isFuture.outputType,$=Pe(E);Tr(t,r,e,!0),n.emitter.emitLine(`${t}// Final state - complete the result Future`);let C;return $||(C=e.$.variableName&&p?e.$.variableName:e.$.variableName||f),Ji({emitter:n.emitter,indent:t,resultCode:C,debugLabel:n.currentFunctionName}),""}return Tr(t,r,e),Pe(e.$.type)?"return":`return ${_?f:g??f}`}else{if((c=e.$)!=null&&c.deferredDropExpressions&&bn(e,t,n),r.inAsyncStateMachine){let f=r.inAsyncStateMachine.futureType,_=Un(f).isFuture.outputType,d=Pe(_);Tr(t,r,e,!0),n.emitter.emitLine(`${t}// Final state - complete the result Future (early unit return)`);let g=d?void 0:`(${q(_,n)}){0}`;return Ji({emitter:n.emitter,indent:t,resultCode:g,debugLabel:n.currentFunctionName}),""}return Tr(t,r,e),"return"}}function ed(e,t,n){let r=n;switch(e.tag){case"Atom":{let i=Ha(e,n),o=v$(e,i,t,r);n.emitter.emitLine(`${t}return ${o};`);break}case"FnCall":{if(T(e,D.return)){let i=B(e,t,n);n.emitter.emitLine(`${t}${i};`)}else{let i=T$(e,t,r);n.emitter.emitLine(`${t}return ${i};`)}break}}}var Ks=j(()=>{ft();Gt();ce();Ae();zt();ea();ku();vr();fn()});function td(e,t){e.emitLine(`
9536
9536
  // ============================================================================
9537
9537
  // Parallelism Runtime - Thread and Worker
9538
9538
  // ============================================================================
@@ -10196,7 +10196,7 @@ void __yo_arc_dispose_${r}(${r} arc) {
10196
10196
  }`),t.emitLine(`
10197
10197
  static void __yo_dispose_arc_${r}(void* ptr) {
10198
10198
  __yo_arc_dispose_${r}((${r})ptr);
10199
- }`),i.disposeGenerated=!0}}}function w$(e,t,n){let r=n.emitter;if(e.isNewtype&&e.fields.length===1){let i=e.fields[0].type,o=q(i,n);r.emitDeclarationLine(`typedef ${o} ${t}; // ${e.typeName} : ${x(e)} (newtype - zero-cost abstraction)`),r.emitDeclarationLine("");return}if(e.isReferenceSemantics){r.emitDeclarationLine(`struct ${t}_struct { // ${e.typeName} : ${x(e)} (reference counted)`),r.emitDeclarationLine(" yo_ref_header_t header; // Reference count header");for(let i of e.fields){let o=q(i.type,n),a=ve(i.label);r.emitDeclarationLine(` ${o} ${a};`)}r.emitDeclarationLine("};")}else{r.emitDeclarationLine(`struct ${t}_struct { // ${e.typeName} : ${x(e)}`);for(let i of e.fields){let o=q(i.type,n),a=ve(i.label);r.emitDeclarationLine(` ${o} ${a};`)}r.emitDeclarationLine("};")}r.emitDeclarationLine("")}function F$(e,t,n){let r=n.emitter;if(r.emitDeclarationLine(`typedef struct { // ${e.typeName} : ${x(e)}`),e.fields.length===0)r.emitDeclarationLine(" uint8_t _dummy; // zero-sized type marker");else for(let i=0;i<e.fields.length;i++){let o=e.fields[i],a=q(o.type,n),s=`_${i}`;r.emitDeclarationLine(` ${a} ${s};`)}r.emitDeclarationLine(`} ${t};`),r.emitDeclarationLine("")}function L$(e,t,n){let r=n.emitter;r.emitDeclarationLine(`typedef union { // ${e.typeName} : ${x(e)}`);for(let i of e.fields){let o=q(i.type,n),a=ve(i.label);r.emitDeclarationLine(` ${o} ${a};`)}r.emitDeclarationLine(`} ${t};`),r.emitDeclarationLine("")}function nf(e,t,n){let r=n.emitter,i=Hn(e);if(i){let l=q(i,n);r.emitDeclarationLine(`typedef ${l} ${t}; // ${e.typeName} : ${x(e)} (optimized as nullable pointer)`),r.emitDeclarationLine("");return}if(Ur(e)){r.emitDeclarationLine(`typedef enum { // ${e.typeName} : ${x(e)} (optimized as simple enum)`);for(let l=0;l<e.variants.length;l++){let u=e.variants[l];if(u){let c=Zn(e,u.name,n),f=l<e.variants.length-1?",":"",p=u.discriminant??BigInt(l);r.emitDeclarationLine(` ${c} = ${p}${f}`)}}r.emitDeclarationLine(`} ${t};`),r.emitDeclarationLine("");return}let a=`${t}_tag`;r.emitDeclarationLine("typedef enum {");for(let l=0;l<e.variants.length;l++){let u=e.variants[l];if(u){let c=Zn(e,u.name,n),f=l<e.variants.length-1?",":"",p=u.discriminant??BigInt(l);r.emitDeclarationLine(` ${c} = ${p}${f}`)}}r.emitDeclarationLine(`} ${a};`),r.emitDeclarationLine("");let s=`${t}_data`;r.emitDeclarationLine("typedef union {");for(let l of e.variants)if(l.fields&&l.fields.length>0){let u=l.fields.filter(c=>!Pe(c.type));if(u.length>0){let c=l.name;r.emitDeclarationLine(" struct {");for(let f of u){let p=q(f.type,n),_=ve(f.label);r.emitDeclarationLine(` ${p} ${_};`)}r.emitDeclarationLine(` } ${c};`)}}r.emitDeclarationLine(`} ${s};`),r.emitDeclarationLine(""),r.emitDeclarationLine(`struct ${t}_struct { // ${e.typeName} : ${x(e)}`),r.emitDeclarationLine(` ${a} tag;`),r.emitDeclarationLine(` ${s} data;`),r.emitDeclarationLine("};"),r.emitDeclarationLine("")}var of=j(()=>{ce();Ae();Je();zt();tf();tf()});function A$(e,t){let n=Xr(t,"Dispose");if(!n)return;let r={...n,receiverType:e};if(e.trait)for(let o of e.trait.fields){if(!o.assignedValue||!mn(o.assignedValue))continue;let a=o.assignedValue,s=a.type;if(ie({type:r,env:t},{type:s,env:t}))return a}let i=hu({concreteType:e,traitType:n,env:t});if(i)return i.traitValue}function I$(e,t,n){var s;let r=A$(e,t);if(!r)return;let i=r.type.fields.findIndex(l=>l.label===F.dispose[0]);if(i<0)return;let o=r.fields[i];if(!$e(o))return;let a=(s=n.functions[o.funcId])==null?void 0:s.cName;if(a)return a;for(let l in n.functions){let u=n.functions[l],c=u.value,f=c.specializedType??c.type;if(c.funcName===F.dispose[0]&&f.SelfType&&ie({type:f.SelfType,env:t},{type:e,env:t}))return u.cName}}function id(e){var t,n,r,i,o,a,s,l;e.emitter.emitLine("// Function implementations"),Q_(e.emitter,e.debugAsyncAwait),td(e.emitter,e.debugParallelism),N$(e),V$(e);for(let u in e.functions){let{value:c,cName:f}=e.functions[u],p=f==="__yo_user_main",_=(n=(t=c.body)==null?void 0:t.$)==null?void 0:n.effectAnalysis,d=_&&_.hasEffects;if(!p&&!c.type.isClosure&&((r=c.specializedFunctionCaches)==null?void 0:r.length)>0||!p&&!d&&!c.isModuleEffectMember&&!c.type.isClosure&&!c.specializedType&&(((i=c.specializedFunctionCaches)==null?void 0:i.length)??0)===0&&An(c.specializedType??c.type).length===0&&[...c.type.implicitParameters,...c.type.parameters.filter(A=>A.isImplicit)].some(A=>te(A.type)))continue;let y=c.specializedType&&!ii(c.type),h=c.specializedType??c.type,v=An(h).length>0,E=c.type.parameters.some(A=>A.isCompileTimeOnly);if(!p&&(!c.isModuleEffectMember||E)&&!c.specializedType&&(((o=c.specializedFunctionCaches)==null?void 0:o.length)??0)===0&&(ki(c.type)||bo(c))||!p&&c.isIoAsyncStateMachineClosure||!p&&!d&&!v&&!c.isModuleEffectMember&&(ki(c.type)&&!c.type.isClosure||((a=c.specializedFunctionCaches)==null?void 0:a.length)>0&&!c.type.isClosure||c.specializedType&&!y||bo(c)||Ra(c)||c.isIoAsyncStateMachineClosure))continue;let $=c.specializedType??c.type,C=!d&&!c.isModuleEffectMember&&($.parameters.some(A=>lt(A.type))||$.forallParameters.length>0),w=lt($.return.type),k=z($.return.type)&&$.return.type.requiredTraits.length>0;if(C||w&&!k&&!c.isModuleEffectMember)continue;let b=(l=(s=c.body)==null?void 0:s.$)==null?void 0:l.effectAnalysis;b&&b.hasEffects,sd(c,f,e)}rf(e)}function od(e){let t=e.emitter,n=!1,r=null;for(let a in e.functions){let{cName:s,value:l}=e.functions[a];if(s==="__yo_user_main"){n=!0,r=l;break}}if(!n||!r)return;let i=r.type.return.type;if(!Pe(i))throw new Error(`main function must return unit , but it returns ${x(i)}. Use 'main :: (fn() -> unit)' instead. For exit codes, use 'exit(code)' from std/libc/stdlib.yo`);{let s=An(r.type).map(()=>"NULL").join(", "),l=s?`(${s})`:"()";t.emitLine(`
10199
+ }`),i.disposeGenerated=!0}}}function w$(e,t,n){let r=n.emitter;if(e.isNewtype&&e.fields.length===1){let i=e.fields[0].type,o=q(i,n);r.emitDeclarationLine(`typedef ${o} ${t}; // ${e.typeName} : ${x(e)} (newtype - zero-cost abstraction)`),r.emitDeclarationLine("");return}if(e.isReferenceSemantics){r.emitDeclarationLine(`struct ${t}_struct { // ${e.typeName} : ${x(e)} (reference counted)`),r.emitDeclarationLine(" yo_ref_header_t header; // Reference count header");for(let i of e.fields){let o=q(i.type,n),a=ve(i.label);r.emitDeclarationLine(` ${o} ${a};`)}r.emitDeclarationLine("};")}else{r.emitDeclarationLine(`struct ${t}_struct { // ${e.typeName} : ${x(e)}`);for(let i of e.fields){let o=q(i.type,n),a=ve(i.label);r.emitDeclarationLine(` ${o} ${a};`)}r.emitDeclarationLine("};")}r.emitDeclarationLine("")}function F$(e,t,n){let r=n.emitter;if(r.emitDeclarationLine(`typedef struct { // ${e.typeName} : ${x(e)}`),e.fields.length===0)r.emitDeclarationLine(" uint8_t _dummy; // zero-sized type marker");else for(let i=0;i<e.fields.length;i++){let o=e.fields[i],a=q(o.type,n),s=`_${i}`;r.emitDeclarationLine(` ${a} ${s};`)}r.emitDeclarationLine(`} ${t};`),r.emitDeclarationLine("")}function L$(e,t,n){let r=n.emitter;r.emitDeclarationLine(`typedef union { // ${e.typeName} : ${x(e)}`);for(let i of e.fields){let o=q(i.type,n),a=ve(i.label);r.emitDeclarationLine(` ${o} ${a};`)}r.emitDeclarationLine(`} ${t};`),r.emitDeclarationLine("")}function nf(e,t,n){let r=n.emitter,i=Hn(e);if(i){let l=q(i,n);r.emitDeclarationLine(`typedef ${l} ${t}; // ${e.typeName} : ${x(e)} (optimized as nullable pointer)`),r.emitDeclarationLine("");return}if(Ur(e)){r.emitDeclarationLine(`typedef enum { // ${e.typeName} : ${x(e)} (optimized as simple enum)`);for(let l=0;l<e.variants.length;l++){let u=e.variants[l];if(u){let c=Zn(e,u.name,n),f=l<e.variants.length-1?",":"",p=u.discriminant??BigInt(l);r.emitDeclarationLine(` ${c} = ${p}${f}`)}}r.emitDeclarationLine(`} ${t};`),r.emitDeclarationLine("");return}let a=`${t}_tag`;r.emitDeclarationLine("typedef enum {");for(let l=0;l<e.variants.length;l++){let u=e.variants[l];if(u){let c=Zn(e,u.name,n),f=l<e.variants.length-1?",":"",p=u.discriminant??BigInt(l);r.emitDeclarationLine(` ${c} = ${p}${f}`)}}r.emitDeclarationLine(`} ${a};`),r.emitDeclarationLine("");let s=`${t}_data`;r.emitDeclarationLine("typedef union {");for(let l of e.variants)if(l.fields&&l.fields.length>0){let u=l.fields.filter(c=>!Pe(c.type));if(u.length>0){let c=l.name;r.emitDeclarationLine(" struct {");for(let f of u){let p=q(f.type,n),_=ve(f.label);r.emitDeclarationLine(` ${p} ${_};`)}r.emitDeclarationLine(` } ${c};`)}}r.emitDeclarationLine(`} ${s};`),r.emitDeclarationLine(""),r.emitDeclarationLine(`struct ${t}_struct { // ${e.typeName} : ${x(e)}`),r.emitDeclarationLine(` ${a} tag;`),r.emitDeclarationLine(` ${s} data;`),r.emitDeclarationLine("};"),r.emitDeclarationLine("")}var of=j(()=>{ce();Ae();Je();zt();tf();tf()});function A$(e,t){let n=Xr(t,"Dispose");if(!n)return;let r={...n,receiverType:e};if(e.trait)for(let o of e.trait.fields){if(!o.assignedValue||!mn(o.assignedValue))continue;let a=o.assignedValue,s=a.type;if(ie({type:r,env:t},{type:s,env:t}))return a}let i=hu({concreteType:e,traitType:n,env:t});if(i)return i.traitValue}function I$(e,t,n){var s;let r=A$(e,t);if(!r)return;let i=r.type.fields.findIndex(l=>l.label===F.dispose[0]);if(i<0)return;let o=r.fields[i];if(!$e(o))return;let a=(s=n.functions[o.funcId])==null?void 0:s.cName;if(a)return a;for(let l in n.functions){let u=n.functions[l],c=u.value,f=c.specializedType??c.type;if(c.funcName===F.dispose[0]&&f.SelfType&&ie({type:f.SelfType,env:t},{type:e,env:t}))return u.cName}}function id(e){var t,n,r,i,o,a,s,l;e.emitter.emitLine("// Function implementations"),Q_(e.emitter,e.debugAsyncAwait),td(e.emitter,e.debugParallelism),N$(e),V$(e);for(let u in e.functions){let{value:c,cName:f}=e.functions[u],p=f==="__yo_user_main",_=(n=(t=c.body)==null?void 0:t.$)==null?void 0:n.effectAnalysis,d=_&&_.hasEffects;if(!p&&!c.type.isClosure&&((r=c.specializedFunctionCaches)==null?void 0:r.length)>0||!p&&!d&&!c.isModuleEffectMember&&!c.type.isClosure&&!c.specializedType&&(((i=c.specializedFunctionCaches)==null?void 0:i.length)??0)===0&&An(c.specializedType??c.type).length===0&&[...c.type.implicitParameters,...c.type.parameters.filter(A=>A.isImplicit)].some(A=>te(A.type)))continue;let y=c.specializedType&&!ii(c.type),h=c.specializedType??c.type,v=An(h).length>0,E=c.type.parameters.some(A=>A.isCompileTimeOnly);if(!p&&(!c.isModuleEffectMember||E)&&!c.specializedType&&(((o=c.specializedFunctionCaches)==null?void 0:o.length)??0)===0&&(wi(c.type)||bo(c))||!p&&c.isIoAsyncStateMachineClosure||!p&&!d&&!v&&!c.isModuleEffectMember&&(wi(c.type)&&!c.type.isClosure||((a=c.specializedFunctionCaches)==null?void 0:a.length)>0&&!c.type.isClosure||c.specializedType&&!y||bo(c)||Ra(c)||c.isIoAsyncStateMachineClosure))continue;let $=c.specializedType??c.type,C=!d&&!c.isModuleEffectMember&&($.parameters.some(A=>lt(A.type))||$.forallParameters.length>0),w=lt($.return.type),k=z($.return.type)&&$.return.type.requiredTraits.length>0;if(C||w&&!k&&!c.isModuleEffectMember)continue;let b=(l=(s=c.body)==null?void 0:s.$)==null?void 0:l.effectAnalysis;b&&b.hasEffects,sd(c,f,e)}rf(e)}function od(e){let t=e.emitter,n=!1,r=null;for(let a in e.functions){let{cName:s,value:l}=e.functions[a];if(s==="__yo_user_main"){n=!0,r=l;break}}if(!n||!r)return;let i=r.type.return.type;if(!Pe(i))throw new Error(`main function must return unit , but it returns ${x(i)}. Use 'main :: (fn() -> unit)' instead. For exit codes, use 'exit(code)' from std/libc/stdlib.yo`);{let s=An(r.type).map(()=>"NULL").join(", "),l=s?`(${s})`:"()";t.emitLine(`
10200
10200
  // Main wrapper - calls __yo_user_main directly
10201
10201
  int main(int argc, char** argv) {
10202
10202
  // Store command-line arguments
@@ -10216,7 +10216,7 @@ int main(int argc, char** argv) {
10216
10216
 
10217
10217
  return 0;
10218
10218
  }
10219
- `)}}function ad(e){var t,n;for(let r in e.functions){let{value:i}=e.functions[r];if(bo(i))continue;let o=(n=(t=i.body)==null?void 0:t.$)==null?void 0:n.effectAnalysis;if(!o||!o.hasEffects)continue;if(i.specializedType){let l=i.specializedType,u=l.forallParameters.length>0||l.parameters.some(_=>_.isCompileTimeOnly),c=l.parameters.some(_=>!_.isCompileTimeOnly&&z(_.type)&&!rt(_.type));if(u||c)continue;let f=i.specializedType.parameters.some(_=>lt(_.type)),p=lt(i.specializedType.return.type);if(f||p)continue}let a=An(i.specializedType??i.type);if(a.length===0&&i.specializedType){let l=An(i.type);l.some(u=>u.fieldFunctionType.forallParameters&&u.fieldFunctionType.forallParameters.length>0)&&(a=l)}a.length>0}}function sd(e,t,n){var $,C,w,k,b,A;let r=n.emitter,i=t,o=e.specializedType??e.type,a;if(e.body&&rt(o.return.type)){let I=Bs(e.body);($=I==null?void 0:I.$)!=null&&$.asyncStateMachineStructName?a=`${I.$.asyncStateMachineStructName}*`:(C=e.body.$)!=null&&C.type&&z(e.body.$.type)&&rt(e.body.$.type)&&(a=q(e.body.$.type,n))}e.body&&z(o.return.type)&&!rt(o.return.type)&&!e.specializedType&&!e.isModuleEffectMember&&(w=e.body.$)!=null&&w.type&&(a=q(e.body.$.type,n));let s=e.specializedType&&An(o).length===0&&An(e.type).some(I=>I.fieldFunctionType.forallParameters&&I.fieldFunctionType.forallParameters.length>0)?e.type:void 0,l=a?Ri(o,t,n,a,s):Ri(o,t,n,void 0,s);r.emitLine(`${l} {`);let u=n.currentFunctionName,c=n.currentFunctionType;n.currentFunctionName=i,n.currentFunctionType=o;let f=n.isModuleEffectMemberFunction,p=n.overrideReturnTypeStr;e.isModuleEffectMember&&(n.isModuleEffectMemberFunction=!0),n.overrideReturnTypeStr=a;let _=n.currentEvidenceParams,d=An(o);if(d.length===0&&e.specializedType){let I=An(e.type);I.some(N=>N.fieldFunctionType.forallParameters&&N.fieldFunctionType.forallParameters.length>0)&&(d=I)}if(d.length>0){let I=new Map;for(let N of d)I.set(`${N.implicitLabel}.${N.fieldLabel}`,N);n.currentEvidenceParams=I}let g=n.currentClosureCaptures,y=n.currentClosureCaptureFrameLevel,h=n.currentClosureType,v=n.currentClosureCaptureTypeCName;if(o.isClosure){let I=e.closureInfo;if(I){let N=I.closureType.isFn,M=I.captureType;if(n.currentClosureType=N.callType,M&&ze(M)&&M.fields.length>0){let V=M.fields.map(W=>W.label);n.currentClosureCaptures=V,n.currentClosureCaptureFrameLevel=e.frameLevel;let O=(k=n.types[M.id])==null?void 0:k.cName;O&&(n.currentClosureCaptureTypeCName=O)}}}if(e.funcName===F.___dispose[0]&&o.SelfType){let I=I$(o.SelfType,e.type.env,n);if(I){let N=((b=o.parameters[0])==null?void 0:b.label)==="__yo_self"?"__yo_self":((A=o.parameters[0])==null?void 0:A.label)??"__yo_self";r.emitLine(` ${I}(${N}); // Call user's dispose method`)}}S$(e.body,o," ",n),n.currentFunctionName=u,n.currentFunctionType=c,n.isModuleEffectMemberFunction=f,n.overrideReturnTypeStr=p,n.currentEvidenceParams=_,n.currentClosureCaptures=g,n.currentClosureCaptureFrameLevel=y,n.currentClosureType=h,n.currentClosureCaptureTypeCName=v,r.emitLine("}")}function S$(e,t,n,r){var o,a,s,l,u,c,f,p,_,d,g;let i=r.emitter;if(S(e)&&T(e,D.begin)){let y=e.args;r.pendingDeferredDrops=[...((o=e.$)==null?void 0:o.deferredDropExpressions)??[]],r.consumedVarPendingDrops=[...((a=e.$)==null?void 0:a.consumedVariableDropExpressions)??[]];let h=!1;for(let v=0;v<y.length-1;v++){let E=y[v];T(E,D.return)&&(h=!0);let $=B(E,n,r);if($&&(!E.$||!en(E.$.env.modulePath,$))&&i.emitLine(`${n}${$};`),h)break}if(!h&&y.length>0){let v=y[y.length-1];if(rt(t.return.type)&&v){let $=qn(v),C=(s=v.$)==null?void 0:s.type,w=C&&rt(C);if($||w){let k=B(v,n,r);if((l=e.$)!=null&&l.deferredDropExpressions&&e.$.deferredDropExpressions.length>0&&C){let b=q(C,r),A=`_yo_async_return_${Math.random().toString(36).substr(2,9)}`;i.emitLine(`${n}${b} ${A} = ${k};`),bn(e,n,r),i.emitLine(`${n}return ${A};`)}else i.emitLine(`${n}return ${k};`);return}}else if(v&&Pe(t.return.type)){let $=B(v,n,r);$&&i.emitLine(`${n}${$};`),bn(e,n,r)}else if(v){let $=cn((u=v.$)==null?void 0:u.controlFlow),C=Pe((c=v.$)==null?void 0:c.type)||S(v)&&T(v,D.tuple)&&v.args.length===0,w=y.length>1?y[y.length-2]:null,k=cn((f=w==null?void 0:w.$)==null?void 0:f.controlFlow);if(!(C&&k))if($){let b=B(v,n,r);b&&i.emitLine(`${n}${b};`)}else{if((p=v.$)!=null&&p.deferredDupExpressions&&v.$.deferredDupExpressions.length>0){if((_=v.$)!=null&&_.variableName){let I=q(t.return.type,r),N=et(v.$.variableName,v.$.env),M=B(v,n,r);N!==M&&i.emitLine(`${n}${I} ${N} = ${M};`)}jt(v,n,r);let A=v.$.deferredDupExpressions[0];if(S(A)&&((d=A.$)!=null&&d.variableName)){let I=ve(A.$.variableName);bn(e,n,r),i.emitLine(`${n}return ${I};`);return}}let b=B(v,n,r);bn(e,n,r),b&&i.emitLine(`${n}return ${b};`)}}}else if(h&&y.length>0){let v=y[y.length-1];v&&Pe((g=v.$)==null?void 0:g.type)}}else if(bn(e,n,r),Pe(t.return.type)){let y=B(e,n,r);y&&i.emitLine(`${n}${y};`)}else ed(e,n,r)}function ld(e){var t,n;for(let r in e.functions){let{value:i,cName:o}=e.functions[r];if(bo(i)||!i.specializedType||!ii(i.type))continue;let a=i.specializedType,s=a.forallParameters.length>0||a.parameters.some(_=>_.isCompileTimeOnly),l=a.parameters.some(_=>!_.isCompileTimeOnly&&z(_.type)&&!rt(_.type));if(s||l)continue;let u=i.specializedType.parameters.some(_=>lt(_.type)),c=lt(i.specializedType.return.type);if(u||c)continue;let f=(n=(t=i.body)==null?void 0:t.$)==null?void 0:n.effectAnalysis;f&&f.hasEffects||i.isModuleEffectMember||An(i.specializedType??i.type).length>0||sd(i,o,e)}}function N$(e){let t=e.emitter;t.emitLine(`// Non-atomic reference counting functions (thread-local)
10219
+ `)}}function ad(e){var t,n;for(let r in e.functions){let{value:i}=e.functions[r];if(bo(i))continue;let o=(n=(t=i.body)==null?void 0:t.$)==null?void 0:n.effectAnalysis;if(!o||!o.hasEffects)continue;if(i.specializedType){let l=i.specializedType,u=l.forallParameters.length>0||l.parameters.some(_=>_.isCompileTimeOnly),c=l.parameters.some(_=>!_.isCompileTimeOnly&&z(_.type)&&!rt(_.type));if(u||c)continue;let f=i.specializedType.parameters.some(_=>lt(_.type)),p=lt(i.specializedType.return.type);if(f||p)continue}let a=An(i.specializedType??i.type);if(a.length===0&&i.specializedType){let l=An(i.type);l.some(u=>u.fieldFunctionType.forallParameters&&u.fieldFunctionType.forallParameters.length>0)&&(a=l)}a.length>0}}function sd(e,t,n){var $,C,w,k,b,A;let r=n.emitter,i=t,o=e.specializedType??e.type,a;if(e.body&&rt(o.return.type)){let I=Bs(e.body);($=I==null?void 0:I.$)!=null&&$.asyncStateMachineStructName?a=`${I.$.asyncStateMachineStructName}*`:(C=e.body.$)!=null&&C.type&&z(e.body.$.type)&&rt(e.body.$.type)&&(a=q(e.body.$.type,n))}e.body&&z(o.return.type)&&!rt(o.return.type)&&!e.specializedType&&!e.isModuleEffectMember&&(w=e.body.$)!=null&&w.type&&(a=q(e.body.$.type,n));let s=e.specializedType&&An(o).length===0&&An(e.type).some(I=>I.fieldFunctionType.forallParameters&&I.fieldFunctionType.forallParameters.length>0)?e.type:void 0,l=a?Pi(o,t,n,a,s):Pi(o,t,n,void 0,s);r.emitLine(`${l} {`);let u=n.currentFunctionName,c=n.currentFunctionType;n.currentFunctionName=i,n.currentFunctionType=o;let f=n.isModuleEffectMemberFunction,p=n.overrideReturnTypeStr;e.isModuleEffectMember&&(n.isModuleEffectMemberFunction=!0),n.overrideReturnTypeStr=a;let _=n.currentEvidenceParams,d=An(o);if(d.length===0&&e.specializedType){let I=An(e.type);I.some(N=>N.fieldFunctionType.forallParameters&&N.fieldFunctionType.forallParameters.length>0)&&(d=I)}if(d.length>0){let I=new Map;for(let N of d)I.set(`${N.implicitLabel}.${N.fieldLabel}`,N);n.currentEvidenceParams=I}let g=n.currentClosureCaptures,y=n.currentClosureCaptureFrameLevel,h=n.currentClosureType,v=n.currentClosureCaptureTypeCName;if(o.isClosure){let I=e.closureInfo;if(I){let N=I.closureType.isFn,M=I.captureType;if(n.currentClosureType=N.callType,M&&ze(M)&&M.fields.length>0){let V=M.fields.map(W=>W.label);n.currentClosureCaptures=V,n.currentClosureCaptureFrameLevel=e.frameLevel;let O=(k=n.types[M.id])==null?void 0:k.cName;O&&(n.currentClosureCaptureTypeCName=O)}}}if(e.funcName===F.___dispose[0]&&o.SelfType){let I=I$(o.SelfType,e.type.env,n);if(I){let N=((b=o.parameters[0])==null?void 0:b.label)==="__yo_self"?"__yo_self":((A=o.parameters[0])==null?void 0:A.label)??"__yo_self";r.emitLine(` ${I}(${N}); // Call user's dispose method`)}}S$(e.body,o," ",n),n.currentFunctionName=u,n.currentFunctionType=c,n.isModuleEffectMemberFunction=f,n.overrideReturnTypeStr=p,n.currentEvidenceParams=_,n.currentClosureCaptures=g,n.currentClosureCaptureFrameLevel=y,n.currentClosureType=h,n.currentClosureCaptureTypeCName=v,r.emitLine("}")}function S$(e,t,n,r){var o,a,s,l,u,c,f,p,_,d,g;let i=r.emitter;if(S(e)&&T(e,D.begin)){let y=e.args;r.pendingDeferredDrops=[...((o=e.$)==null?void 0:o.deferredDropExpressions)??[]],r.consumedVarPendingDrops=[...((a=e.$)==null?void 0:a.consumedVariableDropExpressions)??[]];let h=!1;for(let v=0;v<y.length-1;v++){let E=y[v];T(E,D.return)&&(h=!0);let $=B(E,n,r);if($&&(!E.$||!en(E.$.env.modulePath,$))&&i.emitLine(`${n}${$};`),h)break}if(!h&&y.length>0){let v=y[y.length-1];if(rt(t.return.type)&&v){let $=qn(v),C=(s=v.$)==null?void 0:s.type,w=C&&rt(C);if($||w){let k=B(v,n,r);if((l=e.$)!=null&&l.deferredDropExpressions&&e.$.deferredDropExpressions.length>0&&C){let b=q(C,r),A=`_yo_async_return_${Math.random().toString(36).substr(2,9)}`;i.emitLine(`${n}${b} ${A} = ${k};`),bn(e,n,r),i.emitLine(`${n}return ${A};`)}else i.emitLine(`${n}return ${k};`);return}}else if(v&&Pe(t.return.type)){let $=B(v,n,r);$&&i.emitLine(`${n}${$};`),bn(e,n,r)}else if(v){let $=cn((u=v.$)==null?void 0:u.controlFlow),C=Pe((c=v.$)==null?void 0:c.type)||S(v)&&T(v,D.tuple)&&v.args.length===0,w=y.length>1?y[y.length-2]:null,k=cn((f=w==null?void 0:w.$)==null?void 0:f.controlFlow);if(!(C&&k))if($){let b=B(v,n,r);b&&i.emitLine(`${n}${b};`)}else{if((p=v.$)!=null&&p.deferredDupExpressions&&v.$.deferredDupExpressions.length>0){if((_=v.$)!=null&&_.variableName){let I=q(t.return.type,r),N=et(v.$.variableName,v.$.env),M=B(v,n,r);N!==M&&i.emitLine(`${n}${I} ${N} = ${M};`)}jt(v,n,r);let A=v.$.deferredDupExpressions[0];if(S(A)&&((d=A.$)!=null&&d.variableName)){let I=ve(A.$.variableName);bn(e,n,r),i.emitLine(`${n}return ${I};`);return}}let b=B(v,n,r);bn(e,n,r),b&&i.emitLine(`${n}return ${b};`)}}}else if(h&&y.length>0){let v=y[y.length-1];v&&Pe((g=v.$)==null?void 0:g.type)}}else if(bn(e,n,r),Pe(t.return.type)){let y=B(e,n,r);y&&i.emitLine(`${n}${y};`)}else ed(e,n,r)}function ld(e){var t,n;for(let r in e.functions){let{value:i,cName:o}=e.functions[r];if(bo(i)||!i.specializedType||!ii(i.type))continue;let a=i.specializedType,s=a.forallParameters.length>0||a.parameters.some(_=>_.isCompileTimeOnly),l=a.parameters.some(_=>!_.isCompileTimeOnly&&z(_.type)&&!rt(_.type));if(s||l)continue;let u=i.specializedType.parameters.some(_=>lt(_.type)),c=lt(i.specializedType.return.type);if(u||c)continue;let f=(n=(t=i.body)==null?void 0:t.$)==null?void 0:n.effectAnalysis;f&&f.hasEffects||i.isModuleEffectMember||An(i.specializedType??i.type).length>0||sd(i,o,e)}}function N$(e){let t=e.emitter;t.emitLine(`// Non-atomic reference counting functions (thread-local)
10220
10220
  void __yo_decr_rc(void* ptr) {
10221
10221
  if (ptr == NULL) return;
10222
10222
  yo_ref_header_t* header = (yo_ref_header_t*)ptr;
@@ -10648,16 +10648,16 @@ static uint8_t** __yo_argv;
10648
10648
  static Slice_uint8_t_u42_ __yo_args;
10649
10649
  `),fd(i),ef(i),I_(i),$_(i),ad(i),id(i),O_(i),R_(i),P_(i),M_(i),A_(i),r.isLibrary||od(i),ud(i),C_(i),ld(i)}print(){return this.emitter.print()}getExportedFunctionNames(){return this.exportedFunctionNames}}});function md(e){var t,n;return(t=e.$)!=null&&t.variableName?!0:(((n=e.$)==null?void 0:n.value)!==void 0,!1)}function Fu(e,t){var n;if(S(e)){(n=e.$)!=null&&n.variableName&&t.add(e.$.variableName);for(let r of e.args)Fu(r,t);e.func&&Fu(e.func,t)}}function yd(e,t,n){let r=n,i=r.pendingDeferredDrops;if(!(!i||e.size===0)){r.shortCircuitHandledDropVarNames||(r.shortCircuitHandledDropVarNames=new Set);for(let o of i){let a=Yr(o);if(a&&e.has(a)){let s=B(o,t,n);s&&n.emitter.emitLine(`${t}${s};`),r.shortCircuitHandledDropVarNames.add(a)}}}}function gd(e,t,n){var l;if(e.args.length===0)return"true";if(e.args.length===1)return B(e.args[0],t,n);let r=[];for(let u of e.args){let c=(l=u.$)==null?void 0:l.value;if(Lt(c)){if(c.value===!1)return"false";continue}r.push(u)}if(r.length===0)return"true";if(r.length===1)return B(r[0],t,n);if(!r.slice(1).some(u=>md(u)))return`(${r.map(c=>B(c,t,n)).join(" && ")})`;let o=`__yo_sc_${dd++}`;n.emitter.emitLine(`${t}bool ${o} = false;`);let a=t,s=r.length-1;for(let u=0;u<r.length;u++){let c=B(r[u],a,n);u<r.length-1?(n.emitter.emitLine(`${a}if (${c}) {`),a+=" "):n.emitter.emitLine(`${a}${o} = ${c};`)}for(let u=s-1;u>=0;u--){let c=r[u+1],f=new Set;Fu(c,f),yd(f,a,n),a=a.slice(2),n.emitter.emitLine(`${a}}`)}return o}function hd(e,t,n){var l;if(e.args.length===0)return"false";if(e.args.length===1)return B(e.args[0],t,n);let r=[];for(let u of e.args){let c=(l=u.$)==null?void 0:l.value;if(Lt(c)){if(c.value===!0)return"true";continue}r.push(u)}if(r.length===0)return"false";if(r.length===1)return B(r[0],t,n);if(!r.slice(1).some(u=>md(u)))return`(${r.map(c=>B(c,t,n)).join(" || ")})`;let o=`__yo_sc_${dd++}`;n.emitter.emitLine(`${t}bool ${o} = true;`);let a=t,s=r.length-1;for(let u=0;u<r.length;u++){let c=B(r[u],a,n);u<r.length-1?(n.emitter.emitLine(`${a}if (!(${c})) {`),a+=" "):n.emitter.emitLine(`${a}${o} = ${c};`)}for(let u=s-1;u>=0;u--){let c=r[u+1],f=new Set;Fu(c,f),yd(f,a,n),a=a.slice(2),n.emitter.emitLine(`${a}}`)}return o}var dd,vd=j(()=>{ce();ge();zt();fn();dd=0});function Td(e,t,n){var s;let r=e.args[0];if(!r)return"// Error: __yo_arc_dispose requires exactly 1 argument";let i=B(r,t,n),o=(s=r.$)==null?void 0:s.type;return!o||!En(o)?"// Error: __yo_arc_dispose requires an Arc type":`__yo_arc_dispose_${q(o,n)}(${i})`}function af(e){var n;let t=(n=e.func.$)==null?void 0:n.value;return Y(t)&&En(t.value)&&e.args.length===1}function Ed(e,t,n){var c;if(!af(e))return"/* Error: generateArcTypeCall called on non-Arc type call */";let i=((c=e.func.$)==null?void 0:c.value).value,o=i.childType,a=e.args[0],s=B(a,t,n),l=q(i,n),u=q(o,n);return n.arcTypes||(n.arcTypes=new Map),n.arcTypes.has(l)||n.arcTypes.set(l,{childTypeCName:u,arcType:i}),`__yo_create_arc_${l}(${s})`}var $d=j(()=>{Ae();ge();zt();fn()});function bd(e,t,n){var a,s,l,u;let r=(a=e.$)==null?void 0:a.runtimeArgExprsInOrder,i=(s=e.$)==null?void 0:s.type,o=(l=e.$)==null?void 0:l.variableName;if(at(i)&&r){let c=n,f=r.map(_=>{var g,y;let d=B(_,t,n);if((g=_.$)!=null&&g.deferredDupExpressions&&_.$.deferredDupExpressions.length>0){jt(_,t,c);let h=_.$.deferredDupExpressions[0];if(S(h)&&((y=h.$)!=null&&y.variableName))return et(h.$.variableName,h.$.env)}return d}).join(", "),p=q(i,n);if(o&&((u=e.$)!=null&&u.type)){let _=`(${p}){ .data = { ${f} } }`,d=Jt(e.$.type,o,n);return n.emitter.emitLine(`${t}${d} = ${_};`),o}else return`(${p}){ .data = { ${f} } }`}}function Cd(e,t,n){var _,d,g;let r=n.emitter,i=e.args[0],o=e.args[1],a=(_=i.$)==null?void 0:_.value;if(!a||!Y(a)||!at(a.value))return"/* ERROR: __yo_array_fill first argument must be an ArrayType */";let s=a.value,l=s.length;if(!wt(l))return"/* ERROR: __yo_array_fill requires compile-time known array length */";let u=q(s,n),c=B(o,t,n),f=((d=e.$)==null?void 0:d.variableName)||`temp_array_${Date.now()}`,p=`i_${Nt(((g=e.$)==null?void 0:g.env.modulePath)??"")}`;return r.emitLine(`${t}${u} ${f};`),r.emitLine(`${t}for (int ${p} = 0; ${p} < ${l.value}; ${p}++) {`),r.emitLine(`${t} ${f}.data[${p}] = ${c};`),r.emitLine(`${t}}`),f}var kd=j(()=>{ce();Ae();yn();ge();zt();vr();fn()});function wd(e,t,n){var l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k,b,A,I,N,M,V;if((l=e.$)!=null&&l.isCompileTimeOnlyAssignment)return"";let r=e.args[0],i=e.args[1],o=!1;if(S(r)&&T(r,":",2)&&(o=!0,r=r.args[0]),S(r)&&T(r,D.comptime)||S(r)&&T(r,D.given))return"";if((u=r.$)!=null&&u.pathCollection&&((c=r.$)==null?void 0:c.pathCollection.length)>0){let O=r.$.pathCollection[0];if(O&&O.length>=2){let W=O[0];if(typeof W=="string"&&((f=r.$)!=null&&f.env)){let P=ue(r.$.env,W);if(P.length>0&&P[P.length-1].isCompileTimeOnly)return""}}}if(H(r)&&((p=r.$)!=null&&p.env)){let O=r.token.value,W=ue(r.$.env,O);if(W.length>0&&W[W.length-1].isCompileTimeOnly)return""}if(!((_=r.$)!=null&&_.type))return`// Error: No type information for left-hand side ${L(r)}
10650
10650
  `;let a=B(r,t,n),s=!1;if((d=e.$)!=null&&d.variableName){let O=e.$.variableName,W=n;if((W.inAsyncStateMachine||W.inEffectStateMachine)&&a.startsWith("sm->")){let G=(g=W.stateMachineVariables)==null?void 0:g.get(O);if(!G&&W.stateMachineVariables){for(let[,U]of W.stateMachineVariables)if(U.name===O){G=U;break}}if(G&&G.kind!=="outer"){let U=`var_${G.id}`;Pe(r.$.type)||n.emitter.emitLine(`${t}sm->${U} = ${a}; // Save old value for deferred drop`)}else s=!0}else{let G=Jt(r.$.type,O,n);at(r.$.type)?n.emitter.emitLine(`${t}${G} = ${a}; // Save old value for later use`):Pe(r.$.type)||n.emitter.emitLine(`${t}${G} = ${a}; // Save old value for later use`)}}if(at(r.$.type)){let O=B(i,t,n),W=S(i)&&((y=i.$)==null?void 0:y.closureFunctionValue)&&((h=i.$)==null?void 0:h.type)&&Qn(i.$.type),P=n,G=O;if(!W&&((v=i.$)!=null&&v.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){if((E=i.$)!=null&&E.variableName&&(($=i.$)!=null&&$.type)){let X=et(i.$.variableName,i.$.env);if(X!==O.trim()){let re=i.$.convertedRuntimeType||i.$.type,ee=q(re,n);n.emitter.emitLine(`${t}${ee} ${X} = ${O};`)}}jt(i,t,P);let U=i.$.deferredDupExpressions[0];S(U)&&((C=U.$)!=null&&C.variableName)&&(G=et(U.$.variableName,U.$.env))}if(o){let U=Jt(r.$.type,B(r,t,n),n);n.emitter.emitLine(`${t}${U} = ${G};`)}else n.emitter.emitLine(`${t}${a} = ${G};`)}else{let O=B(i,t,n),W=S(i)&&((w=i.$)==null?void 0:w.closureFunctionValue)&&((k=i.$)==null?void 0:k.type)&&Qn(i.$.type),P=n,G=O;if(!W&&((b=i.$)!=null&&b.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){if((A=i.$)!=null&&A.variableName&&((I=i.$)!=null&&I.type)){let X=et(i.$.variableName,i.$.env);if(X!==O.trim()){let re=i.$.convertedRuntimeType||i.$.type,ee=q(re,n);n.emitter.emitLine(`${t}${ee} ${X} = ${O};`)}}jt(i,t,P);let U=i.$.deferredDupExpressions[0];S(U)&&((N=U.$)!=null&&N.variableName)&&(G=et(U.$.variableName,U.$.env))}if(!Pe(r.$.type)){let U=r.$.type,X=(M=i.$)==null?void 0:M.type,re,ee=en(i.$.env.modulePath,G.trim());ee&&n.tempVarAsyncStructNames&&(re=n.tempVarAsyncStructNames.get(G.trim()));let fe=o&&X&&rt(U)&&rt(X),de;ee&&fe?re?de=`${re}*`:de=q(X,n):fe&&re?de=`${re}*`:de=q(fe?X:U,n);let Q=(P.inAsyncStateMachine||P.inEffectStateMachine)&&a.startsWith("sm->");n.emitter.emitLine(`${t}${o&&!Q?de+" ":""}${a} = ${G};`)}}return s?"":((V=e.$)==null?void 0:V.variableName)??""}var Fd=j(()=>{ft();Gt();ce();Ae();yn();zt();vr();fn()});function Ad(e,t,n){var s,l,u,c,f,p,_,d,g,y;let r=e.args[0];if(!r)return"// Error: await requires exactly 1 argument";let i=(s=r.$)==null?void 0:s.type;if(!i||!rt(i))return"// Error: await argument must be a Future type";let o=Un(i);if(!o)return"// Error: could not extract Future module from type";let a=n;if(a.inAsyncStateMachine||a.inEffectStateMachine)return"";if(Nr(e)){let h=B(r,t,n),v=q(i,n),E=o.isFuture.outputType,$=a.emitter,C=Pe(E)||z(E)&&Pe(((l=e.$)==null?void 0:l.type)??E),w=(u=e.$)!=null&&u.variableName?`__sync_future_${e.$.variableName}`:"__sync_future",k=(c=e.$)!=null&&c.variableName?`__pre_await_state_${e.$.variableName}`:"__pre_await_state";$.emitLine(`${t}// Synchronous await (io.await outside state machine)`),$.emitLine(`${t}${v} ${w} = ${h};`),$.emitLine(`${t}int ${k} = ${w}->state;`),qs((f=r.$)==null?void 0:f.type)||($.emitLine(`${t}if (${k} == 0 && ${w}->__yo_resume_fn) {`),M$(e,w,t,n),$.emitLine(`${t} __yo_incr_rc((void*)${w}); // event loop reference`),$.emitLine(`${t} ${w}->__yo_resume_fn((void*)${w});`),$.emitLine(`${t}}`)),$.emitLine(`${t}{`),$.emitLine(`${t} int __await_state = ${w}->state;`),$.emitLine(`${t} while (__await_state != -1 && __await_state != -2) {`),$.emitLine(`${t} yo_async_poll_step();`),$.emitLine(`${t} __await_state = ${w}->state;`),$.emitLine(`${t} }`),$.emitLine(`${t} if (__await_state == -2) {`);let A=Un(i),I=((p=A==null?void 0:A.isFuture.effects)==null?void 0:p.some(N=>te(N.type)||Qe(N.type)||N.isEffectRowSpread))??!1;if(I){$.emitLine(`${t} if (${k} == -2) {`),$.emitLine(`${t} fprintf(stderr, "panic: attempted to await an aborted Future\\n");`),$.emitLine(`${t} abort();`),$.emitLine(`${t} }`),$.emitLine(`${t} __yo_decr_rc((void*)${w});`),$.emitLine(`${t} ${h} = NULL;`);let N=a.pendingDeferredDrops;if(N){let O=(_=e.$)==null?void 0:_.variableName;a.pendingDeferredDrops=N.filter(W=>Yr(W)!==O)}Tr(t+" ",a,e),a.pendingDeferredDrops=N;let M=D$(A,a),V=(g=(d=a.currentFunctionType)==null?void 0:d.return)==null?void 0:g.type;if(M)if($.emitLine(`${t} __yo_effect_escaped = 0;`),V&&!Pe(V)){let O=q(V,n);O!=="void"?($.emitLine(`${t} ${O} _esc_result;`),$.emitLine(`${t} memcpy(&_esc_result, __yo_effect_escape_value, sizeof(${O}));`),$.emitLine(`${t} return _esc_result;`)):$.emitLine(`${t} return;`)}else $.emitLine(`${t} return;`);else if($.emitLine(`${t} __yo_effect_escaped = 1;`),V&&!Pe(V)){let O=q(V,n);$.emitLine(`${t} return (${O}){0};`)}else $.emitLine(`${t} return;`)}else $.emitLine(`${t} fprintf(stderr, "panic: attempted to await an aborted Future\\n");`),$.emitLine(`${t} abort();`);if($.emitLine(`${t} }`),$.emitLine(`${t}}`),C)return"";{let N=((y=e.$)==null?void 0:y.variableName)||"__sync_await_result",M=q(E,n),V=Jt(E,N,n);if(I){if($.emitLine(`${t}${V};`),$.emitLine(`${t}if (${w}->state == -1) {`),ut(E)){let O=ti(E,n);O?$.emitLine(`${t} ${N} = ${O}(${w}->result);`):$.emitLine(`${t} ${N} = ${w}->result;`)}else $.emitLine(`${t} ${N} = ${w}->result;`);$.emitLine(`${t}} else {`),$.emitLine(`${t} ${N} = (${M}){0};`),$.emitLine(`${t}}`)}else if(ut(E)){let O=ti(E,n);O?$.emitLine(`${t}${V} = ${O}(${w}->result);`):$.emitLine(`${t}${V} = ${w}->result;`)}else $.emitLine(`${t}${V} = ${w}->result;`);return N}}return"// Error: await should only be used inside async blocks"}function Id(e,t,n){var c,f,p;let r=e.args[0];if(!r)return"// Error: io.state requires exactly 1 argument";let i=(c=r.$)==null?void 0:c.type;if(!i||!rt(i))return"// Error: io.state argument must be a Future type";let a=n.emitter,s=B(r,t,n),l=(f=e.$)!=null&&f.variableName?`__raw_state_${e.$.variableName}`:"__raw_state",u=((p=e.$)==null?void 0:p.variableName)||"__io_state_result";return a.emitLine(`${t}int ${l} = ${s}->state;`),a.emitLine(`${t}int32_t ${u} = (${l} > 0) ? 1 : ${l};`),u}function Sd(e,t,n){var C,w,k,b,A;let i=n.emitter,o=S(e.func)?e.func.args[0]:e.args[0];if(!o)return"// Error: JoinHandle.await requires a self argument";let a=B(o,t,n),s=(C=e.$)==null?void 0:C.type;if(!s||!qe(s))return"// Error: JoinHandle.await return type must be Option(T)";let l=q(s,n),u=s.variants.find(I=>I.name==="Some"),c=(k=(w=u==null?void 0:u.fields)==null?void 0:w[0])==null?void 0:k.type,f=!c||Pe(c),p=f?"uint8_t":c?q(c,n):"uint8_t",_=Zn(s,"Some",n),d=Zn(s,"None",n),g=((b=e.$)==null?void 0:b.variableName)||"jh",y=`__jh_future_${g}`,h=`__jh_header_${g}`,v=((A=e.$)==null?void 0:A.variableName)||"__jh_result",E=`__yo_jh_header_${g}`;i.emitLine(`${t}// JoinHandle.await \u2014 poll spawned task, return Option(T)`);let $=Jt(s,v,n);if(i.emitLine(`${t}${$};`),i.emitLine(`${t}{`),i.emitLine(`${t} void* ${y} = ${a}.__future;`),i.emitLine(`${t} struct ${E} {`),i.emitLine(`${t} yo_ref_header_t header;`),i.emitLine(`${t} int state;`),i.emitLine(`${t} ${p} result;`),i.emitLine(`${t} void (*continuation_fn)(void*);`),i.emitLine(`${t} void* continuation_sm;`),i.emitLine(`${t} void (*__yo_resume_fn)(void*);`),i.emitLine(`${t} };`),i.emitLine(`${t} struct ${E}* ${h} = (struct ${E}*)${y};`),i.emitLine(`${t} int __jh_state = ${h}->state;`),i.emitLine(`${t} while (__jh_state != -1 && __jh_state != -2) {`),i.emitLine(`${t} yo_async_poll_step();`),i.emitLine(`${t} __jh_state = ${h}->state;`),i.emitLine(`${t} }`),i.emitLine(`${t} if (__jh_state == -1) {`),f)i.emitLine(`${t} ${v} = (${l}){ .tag = ${_} };`);else if(c&&ut(c)){let I=ti(c,n);I?i.emitLine(`${t} ${v} = (${l}){ .tag = ${_}, .data = { .Some = { .value = ${I}(${h}->result) } } };`):i.emitLine(`${t} ${v} = (${l}){ .tag = ${_}, .data = { .Some = { .value = ${h}->result } } };`)}else i.emitLine(`${t} ${v} = (${l}){ .tag = ${_}, .data = { .Some = { .value = ${h}->result } } };`);return i.emitLine(`${t} } else {`),i.emitLine(`${t} __yo_effect_escaped = 0;`),i.emitLine(`${t} ${v} = (${l}){ .tag = ${d} };`),i.emitLine(`${t} }`),i.emitLine(`${t}}`),v}function D$(e,t){let n=e.isFuture.effects;if(!(n!=null&&n.length))return!1;let r=Nd(n),i=t.currentEvidenceParams;for(let o of r)if(te(o.type)){let a=`${o.label}.${o.label}`;if(!(i!=null&&i.has(a)))return!0}else if(Qe(o.type)){let a=!1;if(i){for(let[s]of i)if(s.startsWith(`${o.label}.`)){a=!0;break}}if(!a)return!0}return!1}function Nd(e){let t=[];for(let n of e)if(n.isEffectRowSpread){let r=n.type;z(r)&&r.resolvedConcreteType&&(r=r.resolvedConcreteType),Xt(r)&&t.push(...r.implicitParameters)}else t.push(n);return t}function M$(e,t,n,r){var c,f,p;let i=e.args[0];if(!((c=i==null?void 0:i.$)!=null&&c.type))return;let o=Un(i.$.type);if(!((f=o==null?void 0:o.isFuture.effects)!=null&&f.length))return;let a=Nd(o.isFuture.effects),s=r,l=s.emitter,u=e.args.find(_=>S(_)&&T(_,D.using));if(u){let _=u.args;for(let d=0;d<a.length&&d<_.length;d++){let g=a[d],y=_[d];if(te(g.type)){let h=B(y,n,r),v=g.label;l.emitLine(`${n} ${t}->__capture.${v} = (void*)${h};`)}else Qe(g.type)&&Ld(g.type,t,n,(p=y.$)==null?void 0:p.value,s,e)}}else for(let _ of a)if(te(_.type)){let d=R$(_.label,s,e);d&&l.emitLine(`${n} ${t}->__capture.${_.label} = (void*)${d};`)}else Qe(_.type)&&Ld(_.type,t,n,void 0,s,e)}function Ld(e,t,n,r,i,o){let a=i.emitter;for(let s of e.fields){if(!te(s.type))continue;let l;if(i.stateMachineVariables){for(let[,u]of i.stateMachineVariables)if(u.name===s.label&&u.kind==="outer"){l=`sm->__capture.${s.label}`;break}}if(!l&&r&&At(r)){let u=e.fields.indexOf(s),c=r.fields[u];if(c&&$e(c)){let f=i.functions[c.funcId];f&&(l=f.cName)}}if(!l&&i.currentEvidenceParams){for(let u of i.currentEvidenceParams.values())if(u.fieldLabel===s.label){l=u.cParamName;break}}l||(l=O$(s.label,e,i,o)),l&&a.emitLine(`${n} ${t}->__capture.${s.label} = (void*)${l};`)}}function O$(e,t,n,r){var a,s,l,u;let i=((a=r.$)==null?void 0:a.env)??((s=r.func.$)==null?void 0:s.env);if(!i)return;let o=hr(i,c=>c.isImplicit===!0);for(let c=o.length-1;c>=0;c--){let f=o[c],p=(l=f.value)==null?void 0:l[f.value.length-1];if(p&&At(p)){let _=p.type.fields.findIndex(d=>d.label===e);if(_>=0){let d=p.fields[_];if(d&&$e(d)){let g=(u=n.functions[d.funcId])==null?void 0:u.cName;if(g)return g}}}}}function R$(e,t,n){if(t.currentEvidenceParams){for(let r of t.currentEvidenceParams.values())if(r.fieldLabel===e)return r.cParamName}if(t.stateMachineVariables){for(let[,r]of t.stateMachineVariables)if(r.name===e&&r.kind==="outer")return`sm->__capture.${e}`}}var xd=j(()=>{ft();Jr();Gt();ce();Ae();Je();ge();Cu();zt();vr();fn();Ks()});function Vd(e,t,n){var a,s,l,u,c,f,p,_,d,g,y,h,v,E;let r=(a=e.$)==null?void 0:a.variableName,i=(s=e.$)==null?void 0:s.type,o=n;if(r&&i){!Pe(i)&&!cn((l=e.$)==null?void 0:l.controlFlow)&&n.emitter.emitLine(`${t}${q(i,n)} ${r};`),n.emitter.emitLine(`${t}{ // begin block`);let $=o.pendingDeferredDrops,C=((u=e.$)==null?void 0:u.deferredDropExpressions)??[];o.pendingDeferredDrops=[...C,...$??[]];let w=o.consumedVarPendingDrops,k=((c=e.$)==null?void 0:c.consumedVariableDropExpressions)??[];o.consumedVarPendingDrops=[...k,...w??[]];let b=[],A=!Pe(i)&&!cn((f=e.$)==null?void 0:f.controlFlow);for(let I=0;I<e.args.length;I++){let N=e.args[I],M=B(N,t+" ",n);b.push(M);let V=I===e.args.length-1;M&&!(V&&A)&&(N.$&&en(N.$.env.modulePath,M)||n.emitter.emitLine(`${t} ${M};`))}if(A){let I=e.args[e.args.length-1],N=b[b.length-1];if((p=I.$)!=null&&p.deferredDupExpressions&&I.$.deferredDupExpressions.length>0){if((_=I.$)!=null&&_.variableName){let V=I.$.variableName;I.$.variableName=void 0;let O=B(I,t+" ",n);I.$.variableName=V;let W=q(I.$.type,n),P=et(V,I.$.env);P!==O&&n.emitter.emitLine(`${t} ${W} ${P} = ${O};`),N=P}jt(I,t+" ",n);let M=I.$.deferredDupExpressions[0];S(M)&&((d=M.$)!=null&&d.variableName)&&(N=et(M.$.variableName,M.$.env))}n.emitter.emitLine(`${t} ${r} = ${N};`)}if((g=e.$)!=null&&g.deferredDropExpressions)for(let I of e.$.deferredDropExpressions){if(o.shortCircuitHandledDropVarNames){let M=Yr(I);if(M&&o.shortCircuitHandledDropVarNames.has(M)){o.shortCircuitHandledDropVarNames.delete(M);continue}}let N=B(I,t+" ",n);N&&n.emitter.emitLine(`${t} ${N};`)}return n.emitter.emitLine(`${t}} // end begin block`),o.pendingDeferredDrops=$,o.consumedVarPendingDrops=w,Pe(i)||cn((y=e.$)==null?void 0:y.controlFlow)?"":r}else{n.emitter.emitLine(`${t}{ // begin block`);let $=o.pendingDeferredDrops,C=((h=e.$)==null?void 0:h.deferredDropExpressions)??[];o.pendingDeferredDrops=[...C,...$??[]];let w=o.consumedVarPendingDrops,k=((v=e.$)==null?void 0:v.consumedVariableDropExpressions)??[];if(o.consumedVarPendingDrops=[...k,...w??[]],e.args.map(A=>B(A,t+" ",n)).forEach(A=>{A&&n.emitter.emitLine(`${t} ${A};`)}),(E=e.$)!=null&&E.deferredDropExpressions)for(let A of e.$.deferredDropExpressions){if(o.shortCircuitHandledDropVarNames){let N=Yr(A);if(N&&o.shortCircuitHandledDropVarNames.has(N)){o.shortCircuitHandledDropVarNames.delete(N);continue}}let I=B(A,t+" ",n);I&&n.emitter.emitLine(`${t} ${I};`)}return n.emitter.emitLine(`${t}} // end begin block`),o.pendingDeferredDrops=$,o.consumedVarPendingDrops=w,""}}var Dd=j(()=>{ce();Ae();yn();zt();vr();fn()});function Md(e,t,n){var a;let r=e.args[0];if(S(r)&&T(r,D.comptime,1)||S(r)&&T(r,D.given,1))return"";if(!((a=r.$)!=null&&a.type))return`// Error: No type information for left-hand side ${L(r)}
10651
- `;let i=r.token.value,o=Jt(r.$.type,i,n);return n.emitter.emitLine(`${t}${o};`),""}var Od=j(()=>{ce();zt()});function Rd(e,t,n){var r,i,o,a,s,l,u,c,f,p,_;if(e.$){let d=e.$.variableName,g=e.$.type,y=g&&Pe(g),h=-1;for(let w=0;w<e.args.length;w++){let k=e.args[w];if(S(k)&&T(k,"=>",2)){let b=k.args[0];if(b&&!(Lt((r=b.$)==null?void 0:r.value)&&b.$.value.value===!1)){h=w;break}}}let v=!1;if(h>=0){let w=e.args[h];if(w&&S(w)&&T(w,"=>",2)){let k=w.args[0];k&&Lt((i=k.$)==null?void 0:i.value)&&k.$.value.value===!0&&(v=!0)}}if(!y&&d&&!v){let w=q(g,n);n.emitter.emitLine(`${t}${w} ${d};`)}if(v&&h>=0){let w=e.args[h];if(w&&S(w)&&T(w,"=>",2)){let k=w.args[1];if(k){let b=B(k,t,n);d&&!y&&(b&&b!==""&&!b.startsWith("goto")&&b!=="continue"&&b!=="break"&&!b.includes("return")?n.emitter.emitLine(`${t}${d} = ${b};`):b&&(b.startsWith("goto")||b==="continue"||b==="break"||b.includes("return"))&&n.emitter.emitLine(`${t}${b};`))}}return y?"":d??""}let E=t,$=0,C=!1;for(let w=0;w<e.args.length;w++){let k=e.args[w];if(S(k)&&T(k,"=>",2)){let b=k.args[0],A=k.args[1];if(b&&A){if(Lt((o=b.$)==null?void 0:o.value)&&b.$.value.value===!1)continue;if(C){if(n.emitter.emitLine(`${E}else {`),$++,E+=" ",!(Lt((s=b.$)==null?void 0:s.value)&&b.$.value.value===!0)){let O=B(b,E,n);n.emitter.emitLine(`${E}if (${O}) {`)}}else{if(Lt((a=b.$)==null?void 0:a.value)&&b.$.value.value===!0)n.emitter.emitLine(`${E}{`);else{let V=B(b,E,n);n.emitter.emitLine(`${E}if (${V}) {`)}C=!0}let I=Lt((l=b.$)==null?void 0:l.value)&&b.$.value.value===!0,N=C&&I?E:E+" ";if(S(A)&&T(A,D.begin)){let V=A.args,O=n,W=O.pendingDeferredDrops,P=((u=A.$)==null?void 0:u.deferredDropExpressions)??[];O.pendingDeferredDrops=[...P,...W??[]];let G=O.consumedVarPendingDrops,U=((c=A.$)==null?void 0:c.consumedVariableDropExpressions)??[];O.consumedVarPendingDrops=[...U,...G??[]];for(let X=0;X<V.length-1;X++){let re=V[X],ee=B(re,N,n);ee&&re.$&&!en(re.$.env.modulePath,ee)&&n.emitter.emitLine(`${N}${ee};`)}if(V.length>0){let X=V[V.length-1];(f=X.$)!=null&&f.deferredDupExpressions&&jt(X,N,n);let re=B(X,N,n);re&&(re==="continue"||re==="break"||re.startsWith("goto")||S(X)&&T(X,D.return)||re.includes("return")?n.emitter.emitLine(`${N}${re};`):d&&!y&&n.emitter.emitLine(`${N}${d} = ${re};`))}(p=A.$)!=null&&p.deferredDropExpressions&&bn(A,N,n),O.pendingDeferredDrops=W,O.consumedVarPendingDrops=G}else{(_=A.$)!=null&&_.deferredDupExpressions&&jt(A,N,n);let V=B(A,N,n);V==="continue"||V==="break"||V.startsWith("goto")||S(A)&&T(A,D.return)||V.includes("return")?n.emitter.emitLine(`${N}${V};`):V===""||!V||d&&(y||n.emitter.emitLine(`${N}${d} = ${V};`))}!(C&&I)&&n.emitter.emitLine(`${E}}`)}}}for(let w=0;w<$;w++)E=E.slice(0,-2),n.emitter.emitLine(`${E}}`);return y?"":d??""}return'/* "cond" expression is not evaluated */'}var Pd=j(()=>{ce();Ae();yn();ge();zt();vr();fn()});function Ud(e,t,n){let r=e.args[0];return B(r,t,n)}var zd=j(()=>{fn()});function Bd(e,t,n){var b,A,I,N,M;let r=e.args[0],i=(b=r.$)==null?void 0:b.type;if(!i||!ot(i))throw new Error("downcast codegen: expected Dyn type as first argument");let o=B(r,t,n),s=(A=e.args[1].$)==null?void 0:A.value;if(!s||!Y(s))throw new Error("downcast codegen: expected TypeValue as second argument");let l=s.value,u=q(l,n),c=((I=n.types[l.id])==null?void 0:I.cName)||u,f=`yo_typeid_${ve(c)}`;n.typeIdStatics||(n.typeIdStatics=new Map),n.typeIdStatics.has(l.id)||(n.typeIdStatics.set(l.id,f),n.emitter.emitDeclarationLine(`static const char ${f} = 0;`)),n.cIncludes.add("<stdint.h>");let p=`${o}.vtable->__yo_type_id == (uintptr_t)&${f}`,_,d=!1,g="",y="";for(let[,V]of n.dynImpls){if(V.dynType.id!==i.id)continue;if((z(V.concreteType)&&V.concreteType.resolvedConcreteType?V.concreteType.resolvedConcreteType:V.concreteType).id===l.id&&Ar(V.dataType)){d=!0,g=((N=n.types[V.dataType.id])==null?void 0:N.cName)||`unknown_box_${V.dataType.id}`,y=ve(V.dataType.fields[0].label);break}}if(d){let V=rn(l);if(!V){let O=l;for(;Bi(O)&&O.fields.length===1;)O=O.fields[0].type;V=rn(O)}V?_=`((${u})__yo_incr_rc((void*)((${g}*)${o}.data)->${y}))`:_=`((${u})((${g}*)${o}.data)->${y})`}else _=`((${u})__yo_incr_rc((void*)${o}.data))`;let h=(M=e.$)==null?void 0:M.type;if(!h||!qe(h))throw new Error("downcast codegen: expected Option enum as result type");if(Hn(h))return`((${p}) ? ${_} : NULL)`;let E=q(h,n),$=Zn(h,"Some",n),C=Zn(h,"None",n),w=`(${E}){ .tag = ${$}, .data = { .Some = { .value = ${_} } } }`,k=`(${E}){ .tag = ${C} }`;return`((${p}) ? ${w} : ${k})`}var Gd=j(()=>{Ae();ge();zt();fn()});function Wd(e,t,n){var h,v,E,$,C,w,k,b,A;if(!((h=e.$)!=null&&h.dynCallTraitValues)||e.$.dynCallTraitValues.length===0)return"/* Error: dyn() call missing trait values */";let r=((E=(v=e.$)==null?void 0:v.runtimeArgExprsInOrder)==null?void 0:E[0])??e.args[0];if(!r)return"/* Error: dyn() requires a value argument */";let i=e.$.type;if(!ot(i))return"/* Error: dyn() result type is not DynType */";let o=($=r.$)==null?void 0:$.type;if(!o)return"/* Error: dyn() value has no type */";let a=e.$.dynCallTraitValues;if(!a||a.length===0)return"/* Error: dyn() call missing trait values */";if(!rn(o)&&!Ar(o))return"/* Error: dyn() requires an object type (use box() for value types) */";let s=Ar(o)?o.fields[0].type:o,l=z(s)&&s.resolvedConcreteType?s.resolvedConcreteType:s,u=((C=n.types[i.id])==null?void 0:C.cName)||`yo_dyn_${i.id}`,f=`${(()=>{var V,O;let I=(V=n.types[l.id])==null?void 0:V.cName;if(I)return I;let N=or(l);return(N?(O=n.types[N.id])==null?void 0:O.cName:void 0)||`unknown_${l.id}`})()}_${u}`;n.dynImpls.set(f,{dynType:i,concreteType:s,dataType:o,traitValues:a});let p=B(r,t,n);if((w=r.$)!=null&&w.variableName&&p!==r.$.variableName){let I=Jt(r.$.type,r.$.variableName,n);n.emitter.emitLine(`${t}${I} = ${p};`),p=r.$.variableName}if((k=r.$)!=null&&k.deferredDupExpressions&&r.$.deferredDupExpressions.length>0){jt(r,t,n);let I=r.$.deferredDupExpressions[0];S(I)&&((b=I.$)!=null&&b.variableName)&&(p=et(I.$.variableName,I.$.env))}let _=(A=e.$)==null?void 0:A.variableName;if(!_)return"/* Error: dyn() expression missing temp variable name */";let d=n,g;if(d.inAsyncStateMachine&&d.stateMachineVariables){for(let[,I]of d.stateMachineVariables)if(I.kind==="local"&&I.id===_){g=`sm->var_${I.id}`;break}}let y=`yo_vtable_${f}`;return g?(n.emitter.emitLine(`${t}${g} = (${u}){`),n.emitter.emitLine(`${t} .data = ${p},`),n.emitter.emitLine(`${t} .vtable = &${y}`),n.emitter.emitLine(`${t}};`),g):(n.emitter.emitLine(`${t}${u} ${_} = {`),n.emitter.emitLine(`${t} .data = ${p},`),n.emitter.emitLine(`${t} .vtable = &${y}`),n.emitter.emitLine(`${t}};`),_)}var Yd=j(()=>{Gt();ce();Ae();zt();vr();fn()});function qd(e,t,n){return e.args.length!==0?"// Error: __yo_gc_collect requires exactly 0 arguments":"__yo_gc_collect()"}var Hd=j(()=>{});function jd(e,t,n){var a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k;let r=e.args[0],i=e.args[1],o=n;if(S(r)&&T(r,D.comptime,1)||S(r)&&T(r,D.given,1))return"";if((o.inAsyncStateMachine||o.inEffectStateMachine)&&H(r)&&H(i)){let b=r.token.value,A=i.token.value,I=o.stateMachineVariables&&Array.from(o.stateMachineVariables.values()).some(M=>M.name===b),N=o.stateMachineVariables&&Array.from(o.stateMachineVariables.values()).some(M=>M.name===A);if(b===A&&(I||N))return""}if((a=e.$)!=null&&a.runtimeDestructurings){let b=e.$.runtimeDestructurings,A=B(i,t,n),I=(s=i.$)==null?void 0:s.type;return b.forEach(({label:N,type:M,variableName:V})=>{let O=ve(V,M.isExtern==="c"),W=Jt(M,O,n);if(I&&ze(I)&&I.isNewtype&&I.fields.length===1){let U=I.fields[0];if(U&&U.label===N){n.emitter.emitLine(`${t}${W} = ${A}; // Destructuring ${N} (newtype)`);return}}let P=N.match(/^\d+$/)?`_${N}`:ve(N,M.isExtern==="c");if(I&&st(I)&&!N.match(/^\d+$/)){let U=I.fields.findIndex(X=>X.label===N);P=U>=0?`_${U}`:P}let G=I&&rn(I)?"->":".";n.emitter.emitLine(`${t}${W} = ${A}${G}${P}; // Destructuring ${N}`)}),""}if(H(r)){let b=r.token.value;if(!((l=r.$)!=null&&l.type))return`// Error: No type information for variable ${b}
10652
- `;if((u=r.$)!=null&&u.env){let N=ue(r.$.env,b);if(N.length>0&&N[N.length-1].isCompileTimeOnly)return""}let A=!1,I;if((o.inAsyncStateMachine||o.inEffectStateMachine)&&o.stateMachineVariables&&((c=r.$)!=null&&c.env)){let N=ue(r.$.env,b);if(N.length>0){let M=N[N.length-1],V=M.isOwningTheSameRcValueAs?M.isOwningTheSameRcValueAs.id:M.id;o.stateMachineVariables.has(V)&&(A=!0,I=V)}}if(at(r.$.type))if(S(i)&&T(i,D.array)){let N=B(i,t,n);if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else if(!Pe(r.$.type)){let M=Jt(r.$.type,b,n);n.emitter.emitLine(`${t}${M} = ${N};`)}}else{let N;if((f=i.$)!=null&&f.variableName){let M=et(i.$.variableName,i.$.env),V=B(i,t,n);if(!A){let O=Jt(i.$.type,M,n);M!==V&&n.emitter.emitLine(`${t}${O} = ${V};`)}N=M}else N=B(i,t,n);if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else if(!Pe(r.$.type)){let M=Jt(r.$.type,b,n);n.emitter.emitLine(`${t}${M} = ${N};`)}}else{let N,M=S(i)&&((p=i.$)==null?void 0:p.closureFunctionValue)&&((_=i.$)==null?void 0:_.type)&&Qn(i.$.type),V=S(i)&&qn(i);if((d=i.$)!=null&&d.variableName){let O=et(i.$.variableName,i.$.env),W=et(b,r.$.env);if(O===W){if(N=B(i,t,n),!M&&!V&&((g=i.$)!=null&&g.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let P=i.$.deferredDupExpressions[0];S(P)&&((y=P.$)!=null&&y.variableName)&&(N=et(P.$.variableName,P.$.env))}}else if(H(i)&&O===et(i.token.value,i.$.env)){if(N=B(i,t,n),!M&&!V&&((h=i.$)!=null&&h.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let P=i.$.deferredDupExpressions[0];S(P)&&((v=P.$)!=null&&v.variableName)&&(N=et(P.$.variableName,P.$.env))}}else if(H(i)&&o.currentClosureCaptures&&o.currentClosureCaptures.includes(i.token.value)&&((E=i.$)!=null&&E.env)&&o.currentClosureCaptureFrameLevel!==void 0&&Pi(i.token.value,i.$.env,o.currentClosureCaptureFrameLevel)){let P=o.currentClosureType;if(P&&P.isClosure){let G=Object.values(o.types).find(U=>U.type===P);G?N=`((${`${G.cName}_capture`}*)closure_context->data)->${et(i.token.value,i.$.env)}`:N=`closure_context->${et(i.token.value,i.$.env)}`}else N=`closure_context->${et(i.token.value,i.$.env)}`}else{let P=B(i,t,n);if(P.trim()!==O){let G=i.$.convertedRuntimeType||i.$.type,U=Jt(G,O,n);n.emitter.emitLine(`${t}${U} = ${P};`)}if(!M&&!V&&(($=i.$)!=null&&$.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let G=i.$.deferredDupExpressions[0];S(G)&&((C=G.$)!=null&&C.variableName)?N=et(G.$.variableName,G.$.env):N=O}else N=O}}else if(N=B(i,t,n),!M&&!V&&((w=i.$)!=null&&w.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let O=i.$.deferredDupExpressions[0];S(O)&&((k=O.$)!=null&&k.variableName)&&(N=et(O.$.variableName,O.$.env))}if(Rt(r.$.type)){let O=r.$.type;if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else if(!Pe(O)){let W=Jt(O,b,n);n.emitter.emitLine(`${t}${W} = ${N};`)}}else if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else{let O=en(i.$.env.modulePath,N.trim()),W;if(O&&n.tempVarAsyncStructNames){let P=n.tempVarAsyncStructNames.get(N.trim());P?W=`${P}*`:W=q(r.$.type,n)}else W=q(r.$.type,n);Pe(r.$.type)||n.emitter.emitLine(`${t}${W} ${et(b,r.$.env)} = ${N};`)}}return""}}var Kd=j(()=>{ft();Jr();Gt();ce();Ae();yn();zt();Hs();vr();fn()});function Xs(e,t,n,r,i=" "){var o,a,s,l,u,c;if(F.__yo_op_add.includes(e))return`((${t[0]}) + (${t[1]}))`;if(F.__yo_op_sub.includes(e))return`((${t[0]}) - (${t[1]}))`;if(F.__yo_op_mul.includes(e))return`((${t[0]}) * (${t[1]}))`;if(F.__yo_op_div.includes(e))return`((${t[0]}) / (${t[1]}))`;if(F.__yo_op_mod.includes(e))return`((${t[0]}) % (${t[1]}))`;if(F.__yo_op_neg.includes(e))return`(-(${t[0]}))`;if(F.__yo_op_eq.includes(e))return`((${t[0]}) == (${t[1]}))`;if(F.__yo_op_neq.includes(e))return`((${t[0]}) != (${t[1]}))`;if(F.__yo_op_lt.includes(e))return`((${t[0]}) < (${t[1]}))`;if(F.__yo_op_lte.includes(e))return`((${t[0]}) <= (${t[1]}))`;if(F.__yo_op_gt.includes(e))return`((${t[0]}) > (${t[1]}))`;if(F.__yo_op_gte.includes(e))return`((${t[0]}) >= (${t[1]}))`;if(F.__yo_op_not.includes(e))return`(!(${t[0]}))`;if(F.__yo_op_bit_and.includes(e))return`((${t[0]}) & (${t[1]}))`;if(F.__yo_op_bit_or.includes(e))return`((${t[0]}) | (${t[1]}))`;if(F.__yo_op_bit_xor.includes(e))return`((${t[0]}) ^ (${t[1]}))`;if(F.__yo_op_bit_complement.includes(e))return`(~(${t[0]}))`;if(F.__yo_op_bit_left_shift.includes(e))return`((${t[0]}) << (${t[1]}))`;if(F.__yo_op_bit_right_shift.includes(e))return`((${t[0]}) >> (${t[1]}))`;if(F.__yo_noop.includes(e))return"";if(F.__yo_return_self.includes(e))return`(*${t[0]})`;if(F.__yo_ms_sleep.includes(e))return`(
10651
+ `;let i=r.token.value,o=Jt(r.$.type,i,n);return n.emitter.emitLine(`${t}${o};`),""}var Od=j(()=>{ce();zt()});function Rd(e,t,n){var r,i,o,a,s,l,u,c,f,p,_;if(e.$){let d=e.$.variableName,g=e.$.type,y=g&&Pe(g),h=-1;for(let w=0;w<e.args.length;w++){let k=e.args[w];if(S(k)&&T(k,"=>",2)){let b=k.args[0];if(b&&!(Lt((r=b.$)==null?void 0:r.value)&&b.$.value.value===!1)){h=w;break}}}let v=!1;if(h>=0){let w=e.args[h];if(w&&S(w)&&T(w,"=>",2)){let k=w.args[0];k&&Lt((i=k.$)==null?void 0:i.value)&&k.$.value.value===!0&&(v=!0)}}if(!y&&d&&!v){let w=q(g,n);n.emitter.emitLine(`${t}${w} ${d};`)}if(v&&h>=0){let w=e.args[h];if(w&&S(w)&&T(w,"=>",2)){let k=w.args[1];if(k){let b=B(k,t,n);d&&!y&&(b&&b!==""&&!b.startsWith("goto")&&b!=="continue"&&b!=="break"&&!b.includes("return")?n.emitter.emitLine(`${t}${d} = ${b};`):b&&(b.startsWith("goto")||b==="continue"||b==="break"||b.includes("return"))&&n.emitter.emitLine(`${t}${b};`))}}return y?"":d??""}let E=t,$=0,C=!1;for(let w=0;w<e.args.length;w++){let k=e.args[w];if(S(k)&&T(k,"=>",2)){let b=k.args[0],A=k.args[1];if(b&&A){if(Lt((o=b.$)==null?void 0:o.value)&&b.$.value.value===!1)continue;if(C){if(n.emitter.emitLine(`${E}else {`),$++,E+=" ",!(Lt((s=b.$)==null?void 0:s.value)&&b.$.value.value===!0)){let O=B(b,E,n);n.emitter.emitLine(`${E}if (${O}) {`)}}else{if(Lt((a=b.$)==null?void 0:a.value)&&b.$.value.value===!0)n.emitter.emitLine(`${E}{`);else{let V=B(b,E,n);n.emitter.emitLine(`${E}if (${V}) {`)}C=!0}let I=Lt((l=b.$)==null?void 0:l.value)&&b.$.value.value===!0,N=C&&I?E:E+" ";if(S(A)&&T(A,D.begin)){let V=A.args,O=n,W=O.pendingDeferredDrops,P=((u=A.$)==null?void 0:u.deferredDropExpressions)??[];O.pendingDeferredDrops=[...P,...W??[]];let G=O.consumedVarPendingDrops,U=((c=A.$)==null?void 0:c.consumedVariableDropExpressions)??[];O.consumedVarPendingDrops=[...U,...G??[]];for(let X=0;X<V.length-1;X++){let re=V[X],ee=B(re,N,n);ee&&re.$&&!en(re.$.env.modulePath,ee)&&n.emitter.emitLine(`${N}${ee};`)}if(V.length>0){let X=V[V.length-1];(f=X.$)!=null&&f.deferredDupExpressions&&jt(X,N,n);let re=B(X,N,n);re&&(re==="continue"||re==="break"||re.startsWith("goto")||S(X)&&T(X,D.return)||re.includes("return")?n.emitter.emitLine(`${N}${re};`):d&&!y&&n.emitter.emitLine(`${N}${d} = ${re};`))}(p=A.$)!=null&&p.deferredDropExpressions&&bn(A,N,n),O.pendingDeferredDrops=W,O.consumedVarPendingDrops=G}else{(_=A.$)!=null&&_.deferredDupExpressions&&jt(A,N,n);let V=B(A,N,n);V==="continue"||V==="break"||V.startsWith("goto")||S(A)&&T(A,D.return)||V.includes("return")?n.emitter.emitLine(`${N}${V};`):V===""||!V||d&&(y||n.emitter.emitLine(`${N}${d} = ${V};`))}!(C&&I)&&n.emitter.emitLine(`${E}}`)}}}for(let w=0;w<$;w++)E=E.slice(0,-2),n.emitter.emitLine(`${E}}`);return y?"":d??""}return'/* "cond" expression is not evaluated */'}var Pd=j(()=>{ce();Ae();yn();ge();zt();vr();fn()});function Ud(e,t,n){let r=e.args[0];return B(r,t,n)}var zd=j(()=>{fn()});function Bd(e,t,n){var b,A,I,N,M;let r=e.args[0],i=(b=r.$)==null?void 0:b.type;if(!i||!ot(i))throw new Error("downcast codegen: expected Dyn type as first argument");let o=B(r,t,n),s=(A=e.args[1].$)==null?void 0:A.value;if(!s||!Y(s))throw new Error("downcast codegen: expected TypeValue as second argument");let l=s.value,u=q(l,n),c=((I=n.types[l.id])==null?void 0:I.cName)||u,f=`yo_typeid_${ve(c)}`;n.typeIdStatics||(n.typeIdStatics=new Map),n.typeIdStatics.has(l.id)||(n.typeIdStatics.set(l.id,f),n.emitter.emitDeclarationLine(`static const char ${f} = 0;`)),n.cIncludes.add("<stdint.h>");let p=`${o}.vtable->__yo_type_id == (uintptr_t)&${f}`,_,d=!1,g="",y="";for(let[,V]of n.dynImpls){if(V.dynType.id!==i.id)continue;if((z(V.concreteType)&&V.concreteType.resolvedConcreteType?V.concreteType.resolvedConcreteType:V.concreteType).id===l.id&&Ar(V.dataType)){d=!0,g=((N=n.types[V.dataType.id])==null?void 0:N.cName)||`unknown_box_${V.dataType.id}`,y=ve(V.dataType.fields[0].label);break}}if(d){let V=rn(l);if(!V){let O=l;for(;Gi(O)&&O.fields.length===1;)O=O.fields[0].type;V=rn(O)}V?_=`((${u})__yo_incr_rc((void*)((${g}*)${o}.data)->${y}))`:_=`((${u})((${g}*)${o}.data)->${y})`}else _=`((${u})__yo_incr_rc((void*)${o}.data))`;let h=(M=e.$)==null?void 0:M.type;if(!h||!qe(h))throw new Error("downcast codegen: expected Option enum as result type");if(Hn(h))return`((${p}) ? ${_} : NULL)`;let E=q(h,n),$=Zn(h,"Some",n),C=Zn(h,"None",n),w=`(${E}){ .tag = ${$}, .data = { .Some = { .value = ${_} } } }`,k=`(${E}){ .tag = ${C} }`;return`((${p}) ? ${w} : ${k})`}var Gd=j(()=>{Ae();ge();zt();fn()});function Wd(e,t,n){var h,v,E,$,C,w,k,b,A;if(!((h=e.$)!=null&&h.dynCallTraitValues)||e.$.dynCallTraitValues.length===0)return"/* Error: dyn() call missing trait values */";let r=((E=(v=e.$)==null?void 0:v.runtimeArgExprsInOrder)==null?void 0:E[0])??e.args[0];if(!r)return"/* Error: dyn() requires a value argument */";let i=e.$.type;if(!ot(i))return"/* Error: dyn() result type is not DynType */";let o=($=r.$)==null?void 0:$.type;if(!o)return"/* Error: dyn() value has no type */";let a=e.$.dynCallTraitValues;if(!a||a.length===0)return"/* Error: dyn() call missing trait values */";if(!rn(o)&&!Ar(o))return"/* Error: dyn() requires an object type (use box() for value types) */";let s=Ar(o)?o.fields[0].type:o,l=z(s)&&s.resolvedConcreteType?s.resolvedConcreteType:s,u=((C=n.types[i.id])==null?void 0:C.cName)||`yo_dyn_${i.id}`,f=`${(()=>{var V,O;let I=(V=n.types[l.id])==null?void 0:V.cName;if(I)return I;let N=or(l);return(N?(O=n.types[N.id])==null?void 0:O.cName:void 0)||`unknown_${l.id}`})()}_${u}`;n.dynImpls.set(f,{dynType:i,concreteType:s,dataType:o,traitValues:a});let p=B(r,t,n);if((w=r.$)!=null&&w.variableName&&p!==r.$.variableName){let I=Jt(r.$.type,r.$.variableName,n);n.emitter.emitLine(`${t}${I} = ${p};`),p=r.$.variableName}if((k=r.$)!=null&&k.deferredDupExpressions&&r.$.deferredDupExpressions.length>0){jt(r,t,n);let I=r.$.deferredDupExpressions[0];S(I)&&((b=I.$)!=null&&b.variableName)&&(p=et(I.$.variableName,I.$.env))}let _=(A=e.$)==null?void 0:A.variableName;if(!_)return"/* Error: dyn() expression missing temp variable name */";let d=n,g;if(d.inAsyncStateMachine&&d.stateMachineVariables){for(let[,I]of d.stateMachineVariables)if(I.kind==="local"&&I.id===_){g=`sm->var_${I.id}`;break}}let y=`yo_vtable_${f}`;return g?(n.emitter.emitLine(`${t}${g} = (${u}){`),n.emitter.emitLine(`${t} .data = ${p},`),n.emitter.emitLine(`${t} .vtable = &${y}`),n.emitter.emitLine(`${t}};`),g):(n.emitter.emitLine(`${t}${u} ${_} = {`),n.emitter.emitLine(`${t} .data = ${p},`),n.emitter.emitLine(`${t} .vtable = &${y}`),n.emitter.emitLine(`${t}};`),_)}var Yd=j(()=>{Gt();ce();Ae();zt();vr();fn()});function qd(e,t,n){return e.args.length!==0?"// Error: __yo_gc_collect requires exactly 0 arguments":"__yo_gc_collect()"}var Hd=j(()=>{});function jd(e,t,n){var a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k;let r=e.args[0],i=e.args[1],o=n;if(S(r)&&T(r,D.comptime,1)||S(r)&&T(r,D.given,1))return"";if((o.inAsyncStateMachine||o.inEffectStateMachine)&&H(r)&&H(i)){let b=r.token.value,A=i.token.value,I=o.stateMachineVariables&&Array.from(o.stateMachineVariables.values()).some(M=>M.name===b),N=o.stateMachineVariables&&Array.from(o.stateMachineVariables.values()).some(M=>M.name===A);if(b===A&&(I||N))return""}if((a=e.$)!=null&&a.runtimeDestructurings){let b=e.$.runtimeDestructurings,A=B(i,t,n),I=(s=i.$)==null?void 0:s.type;return b.forEach(({label:N,type:M,variableName:V})=>{let O=ve(V,M.isExtern==="c"),W=Jt(M,O,n);if(I&&ze(I)&&I.isNewtype&&I.fields.length===1){let U=I.fields[0];if(U&&U.label===N){n.emitter.emitLine(`${t}${W} = ${A}; // Destructuring ${N} (newtype)`);return}}let P=N.match(/^\d+$/)?`_${N}`:ve(N,M.isExtern==="c");if(I&&st(I)&&!N.match(/^\d+$/)){let U=I.fields.findIndex(X=>X.label===N);P=U>=0?`_${U}`:P}let G=I&&rn(I)?"->":".";n.emitter.emitLine(`${t}${W} = ${A}${G}${P}; // Destructuring ${N}`)}),""}if(H(r)){let b=r.token.value;if(!((l=r.$)!=null&&l.type))return`// Error: No type information for variable ${b}
10652
+ `;if((u=r.$)!=null&&u.env){let N=ue(r.$.env,b);if(N.length>0&&N[N.length-1].isCompileTimeOnly)return""}let A=!1,I;if((o.inAsyncStateMachine||o.inEffectStateMachine)&&o.stateMachineVariables&&((c=r.$)!=null&&c.env)){let N=ue(r.$.env,b);if(N.length>0){let M=N[N.length-1],V=M.isOwningTheSameRcValueAs?M.isOwningTheSameRcValueAs.id:M.id;o.stateMachineVariables.has(V)&&(A=!0,I=V)}}if(at(r.$.type))if(S(i)&&T(i,D.array)){let N=B(i,t,n);if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else if(!Pe(r.$.type)){let M=Jt(r.$.type,b,n);n.emitter.emitLine(`${t}${M} = ${N};`)}}else{let N;if((f=i.$)!=null&&f.variableName){let M=et(i.$.variableName,i.$.env),V=B(i,t,n);if(!A){let O=Jt(i.$.type,M,n);M!==V&&n.emitter.emitLine(`${t}${O} = ${V};`)}N=M}else N=B(i,t,n);if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else if(!Pe(r.$.type)){let M=Jt(r.$.type,b,n);n.emitter.emitLine(`${t}${M} = ${N};`)}}else{let N,M=S(i)&&((p=i.$)==null?void 0:p.closureFunctionValue)&&((_=i.$)==null?void 0:_.type)&&Qn(i.$.type),V=S(i)&&qn(i);if((d=i.$)!=null&&d.variableName){let O=et(i.$.variableName,i.$.env),W=et(b,r.$.env);if(O===W){if(N=B(i,t,n),!M&&!V&&((g=i.$)!=null&&g.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let P=i.$.deferredDupExpressions[0];S(P)&&((y=P.$)!=null&&y.variableName)&&(N=et(P.$.variableName,P.$.env))}}else if(H(i)&&O===et(i.token.value,i.$.env)){if(N=B(i,t,n),!M&&!V&&((h=i.$)!=null&&h.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let P=i.$.deferredDupExpressions[0];S(P)&&((v=P.$)!=null&&v.variableName)&&(N=et(P.$.variableName,P.$.env))}}else if(H(i)&&o.currentClosureCaptures&&o.currentClosureCaptures.includes(i.token.value)&&((E=i.$)!=null&&E.env)&&o.currentClosureCaptureFrameLevel!==void 0&&Ui(i.token.value,i.$.env,o.currentClosureCaptureFrameLevel)){let P=o.currentClosureType;if(P&&P.isClosure){let G=Object.values(o.types).find(U=>U.type===P);G?N=`((${`${G.cName}_capture`}*)closure_context->data)->${et(i.token.value,i.$.env)}`:N=`closure_context->${et(i.token.value,i.$.env)}`}else N=`closure_context->${et(i.token.value,i.$.env)}`}else{let P=B(i,t,n);if(P.trim()!==O){let G=i.$.convertedRuntimeType||i.$.type,U=Jt(G,O,n);n.emitter.emitLine(`${t}${U} = ${P};`)}if(!M&&!V&&(($=i.$)!=null&&$.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let G=i.$.deferredDupExpressions[0];S(G)&&((C=G.$)!=null&&C.variableName)?N=et(G.$.variableName,G.$.env):N=O}else N=O}}else if(N=B(i,t,n),!M&&!V&&((w=i.$)!=null&&w.deferredDupExpressions)&&i.$.deferredDupExpressions.length>0){jt(i,t,o);let O=i.$.deferredDupExpressions[0];S(O)&&((k=O.$)!=null&&k.variableName)&&(N=et(O.$.variableName,O.$.env))}if(Rt(r.$.type)){let O=r.$.type;if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else if(!Pe(O)){let W=Jt(O,b,n);n.emitter.emitLine(`${t}${W} = ${N};`)}}else if(A&&I)n.emitter.emitLine(`${t}sm->var_${I} = ${N};`);else{let O=en(i.$.env.modulePath,N.trim()),W;if(O&&n.tempVarAsyncStructNames){let P=n.tempVarAsyncStructNames.get(N.trim());P?W=`${P}*`:W=q(r.$.type,n)}else W=q(r.$.type,n);Pe(r.$.type)||n.emitter.emitLine(`${t}${W} ${et(b,r.$.env)} = ${N};`)}}return""}}var Kd=j(()=>{ft();Jr();Gt();ce();Ae();yn();zt();Hs();vr();fn()});function Xs(e,t,n,r,i=" "){var o,a,s,l,u,c;if(F.__yo_op_add.includes(e))return`((${t[0]}) + (${t[1]}))`;if(F.__yo_op_sub.includes(e))return`((${t[0]}) - (${t[1]}))`;if(F.__yo_op_mul.includes(e))return`((${t[0]}) * (${t[1]}))`;if(F.__yo_op_div.includes(e))return`((${t[0]}) / (${t[1]}))`;if(F.__yo_op_mod.includes(e))return`((${t[0]}) % (${t[1]}))`;if(F.__yo_op_neg.includes(e))return`(-(${t[0]}))`;if(F.__yo_op_eq.includes(e))return`((${t[0]}) == (${t[1]}))`;if(F.__yo_op_neq.includes(e))return`((${t[0]}) != (${t[1]}))`;if(F.__yo_op_lt.includes(e))return`((${t[0]}) < (${t[1]}))`;if(F.__yo_op_lte.includes(e))return`((${t[0]}) <= (${t[1]}))`;if(F.__yo_op_gt.includes(e))return`((${t[0]}) > (${t[1]}))`;if(F.__yo_op_gte.includes(e))return`((${t[0]}) >= (${t[1]}))`;if(F.__yo_op_not.includes(e))return`(!(${t[0]}))`;if(F.__yo_op_bit_and.includes(e))return`((${t[0]}) & (${t[1]}))`;if(F.__yo_op_bit_or.includes(e))return`((${t[0]}) | (${t[1]}))`;if(F.__yo_op_bit_xor.includes(e))return`((${t[0]}) ^ (${t[1]}))`;if(F.__yo_op_bit_complement.includes(e))return`(~(${t[0]}))`;if(F.__yo_op_bit_left_shift.includes(e))return`((${t[0]}) << (${t[1]}))`;if(F.__yo_op_bit_right_shift.includes(e))return`((${t[0]}) >> (${t[1]}))`;if(F.__yo_noop.includes(e))return"";if(F.__yo_return_self.includes(e))return`(*${t[0]})`;if(F.__yo_ms_sleep.includes(e))return`(
10653
10653
  #ifdef _WIN32
10654
10654
  Sleep(${t[0]})
10655
10655
  #else
10656
10656
  usleep((${t[0]}) * 1000)
10657
10657
  #endif
10658
- )`;if(F.__yo_decr_rc.includes(e))return`__yo_decr_rc((void*)(${t[0]}))`;if(F.__yo_as.includes(e)&&((o=n.$)!=null&&o.type)){let f=q(n.$.type,r),p=(s=(a=n.args[0])==null?void 0:a.$)==null?void 0:s.type;return p&&qe(p)&&!Ur(p)?`((${f})((${t[0]}).tag))`:`((${f})(${t[0]}))`}else{if(F.__yo_ptr_add.includes(e))return`(${t[0]} + ${t[1]})`;if(F.__yo_ptr_sub.includes(e))return`(${t[0]} - ${t[1]})`;if(F.__yo_ptr_diff.includes(e))return`(${t[0]} - ${t[1]})`;if(F.__yo_ptr_eq.includes(e))return`(${t[0]} == ${t[1]})`;if(F.__yo_ptr_neq.includes(e))return`(${t[0]} != ${t[1]})`;if(F.__yo_ptr_lt.includes(e))return`(${t[0]} < ${t[1]})`;if(F.__yo_ptr_lte.includes(e))return`(${t[0]} <= ${t[1]})`;if(F.__yo_ptr_gt.includes(e))return`(${t[0]} > ${t[1]})`;if(F.__yo_ptr_gte.includes(e))return`(${t[0]} >= ${t[1]})`;if(F.__yo_slice_len.includes(e))return`(${t[0]}.length)`;if(F.__yo_slice_new.includes(e)&&((l=n.$)!=null&&l.type))return`(${q(n.$.type,r)}){ .data = ${t[0]}, .length = ${t[1]} }`;if(F.__yo_getrandom.includes(e))return`getrandom(${t[0]}, ${t[1]}, ${t[2]})`;if(F.__yo_arc4random_buf.includes(e))return`(arc4random_buf(${t[0]}, ${t[1]}), (void)0)`;if(F.__yo_bcrypt_gen_random.includes(e))return`(int32_t)BCryptGenRandom(NULL, ${t[0]}, ${t[1]}, BCRYPT_USE_SYSTEM_PREFERRED_RNG)`;if(F.__yo_maybe_uninit_new.includes(e)&&((u=n.$)!=null&&u.type)){let f=q(n.$.type,r),p=`__yo_uninit_${P$++}`;return r.emitter.emitLine(`${i}${f} ${p};`),p}else return F.__yo_maybe_uninit_as_ptr.includes(e)&&((c=n.$)!=null&&c.type)?`((${q(n.$.type,r)})(${t[0]}))`:F.__yo_maybe_uninit_assume_init.includes(e)?`(${t[0]})`:`/* Unhandled operator ${e} */`}}var P$,sf=j(()=>{ce();Ae();zt();P$=0});function Xd(e,t,n){var c,f,p,_;let r=e.args[0];if(!r)return"// Error: __yo_iso_extract requires exactly 1 argument";let i=B(r,t,n),o=(c=r.$)==null?void 0:c.type;if(!o||!Fn(o))return"// Error: __yo_iso_extract requires an Iso type";let a=q(o,n),s=(f=e.$)==null?void 0:f.type;if(s&&((p=n.isoTypes)!=null&&p.has(a))){let d=n.isoTypes.get(a);d.optionTypeCName||(d.optionTypeCName=q(s,n))}let l=`__yo_iso_extract_${a}(${i})`,u=(_=e.$)==null?void 0:_.variableName;return u&&s?(n.emitter.emitLine(`${t}${q(s,n)} ${u} = ${l};`),u):l}function Qd(e,t,n){var s;let r=e.args[0];if(!r)return"// Error: __yo_iso_dispose requires exactly 1 argument";let i=B(r,t,n),o=(s=r.$)==null?void 0:s.type;return!o||!Fn(o)?"// Error: __yo_iso_dispose requires an Iso type":`__yo_iso_dispose_${q(o,n)}(${i})`}function lf(e){var n;let t=(n=e.func.$)==null?void 0:n.value;return Y(t)&&Fn(t.value)&&e.args.length===1}function Zd(e,t,n){var c;if(!lf(e))return"/* Error: generateIsoTypeCall called on non-Iso type call */";let i=((c=e.func.$)==null?void 0:c.value).value,o=i.childType,a=e.args[0],s=B(a,t,n),l=q(i,n),u=q(o,n);return n.isoTypes||(n.isoTypes=new Map),n.isoTypes.has(l)||n.isoTypes.set(l,{childTypeCName:u,isoType:i}),`__yo_create_iso_${l}(${s})`}var Jd=j(()=>{Ae();ge();zt();fn()});function no(e){return e===""||e==="break"||e==="continue"||e.startsWith("goto")||e.includes("return")}function ro(e,t,n){var r,i,o,a,s,l,u;if(S(e)&&T(e,D.begin)){let c=e.args,f=n,p=f.pendingDeferredDrops,_=((r=e.$)==null?void 0:r.deferredDropExpressions)??[];f.pendingDeferredDrops=[..._,...p??[]];let d=f.consumedVarPendingDrops,g=((i=e.$)==null?void 0:i.consumedVariableDropExpressions)??[];f.consumedVarPendingDrops=[...g,...d??[]];for(let h=0;h<c.length-1;h++){let v=c[h],E=B(v,t,n);E&&n.emitter.emitLine(`${t}${E};`)}let y="";if(c.length>0){let h=c[c.length-1];if((o=h.$)!=null&&o.deferredDupExpressions&&h.$.deferredDupExpressions.length>0){if((a=h.$)!=null&&a.variableName){let E=h.$.variableName;h.$.variableName=void 0;let $=B(h,t,n);h.$.variableName=E;let C=q(h.$.type,n),w=et(E,h.$.env);w!==$&&n.emitter.emitLine(`${t}${C} ${w} = ${$};`)}jt(h,t,n);let v=h.$.deferredDupExpressions[0];S(v)&&((s=v.$)!=null&&s.variableName)?y=et(v.$.variableName,v.$.env):y=B(h,t,n)}else y=B(h,t,n)}return(l=e.$)!=null&&l.deferredDropExpressions&&bn(e,t,n),f.pendingDeferredDrops=p,f.consumedVarPendingDrops=d,y}else return(u=e.$)!=null&&u.deferredDupExpressions&&jt(e,t,n),B(e,t,n)}function tm(e,t,n){var g,y,h,v,E,$,C;if(!e.$)return'/* "match" expression is not evaluated */';let r=e.$.variableName,i=e.$.type,o=i&&Pe(i);if(!o&&r){let w=q(i,n);n.emitter.emitLine(`${t}${w} ${r};`)}let a=B(e.args[0],t,n),s=(g=e.args[0].$)==null?void 0:g.type;if(!s)return'// Error: "match" expression requires a valid type';if(e.$.isPrimitiveMatch)return z$(e,t,n,a,s,r,o);let l,u;if(_t(s)?(u=s.childType,l=s.tag):rn(s)?(u=s,l="ref_semantics"):u=s,!qe(u))return'// Error: "match" expression requires an enum type';if(!((y=n.types[u.id])==null?void 0:y.cName))return`// Error: "match" expression enum type ${u.typeName} has no C name`;let f=Hn(u);if(f){let w=e.args.slice(1),k=null,b=null;for(let A of w)if(S(A)&&T(A,"=>",2)){let I=A.args[0],N=A.args[1];if(I&&N&&S(I)&&T(I,"."))k={caseBody:N};else{let M=I.func;if(M&&S(M)&&T(M,".")){let V=M.args[0];if(V&&H(V)){let O=V.token.value;b={caseBody:N,variantName:O,casePattern:I}}}}}if(n.emitter.emitLine(`${t}if (${l&&l!=="ref_semantics"?"*":""}${a} != NULL) {`),b){let A;if(S(b.casePattern)&&b.casePattern.args.length>0){let V=b.casePattern.args[0];if(V&&H(V)){A=ve(V.token.value);let O=f;n.emitter.emitLine(`${t} ${q(O,n)} ${A} = ${a};`)}}let I=n;A&&(I.inAsyncStateMachine||I.inEffectStateMachine)&&(I.localShadowedVariables||(I.localShadowedVariables=new Set),I.localShadowedVariables.add(A));let N=ro(b.caseBody,t+" ",n);A&&I.localShadowedVariables&&I.localShadowedVariables.delete(A);let M=no(N);if(!o&&r&&!M){let V=N||a;n.emitter.emitLine(`${t} ${r} = ${V};`)}else N&&N!==""&&n.emitter.emitLine(`${t} ${N};`)}if(n.emitter.emitLine(`${t}} else {`),k){let A=ro(k.caseBody,t+" ",n),I=no(A);!o&&r&&!I?n.emitter.emitLine(`${t} ${r} = ${A};`):A&&A!==""&&n.emitter.emitLine(`${t} ${A};`)}return n.emitter.emitLine(`${t}}`),o?"":r??""}if(Ur(u)){n.emitter.emitLine(`${t}switch (${l&&l!=="ref_semantics"?"*":""}${a}) {`);let w=n.insideMatch;n.insideMatch=!0;let k=e.args.slice(1);for(let b=0;b<k.length;b++){let A=k[b];if(S(A)&&T(A,"=>",2)){let I=A.args[0],N=A.args[1];if(I&&N&&H(I)&&I.token.value==="_"){n.emitter.emitLine(`${t}default: {`);let M=ro(N,t+" ",n);!o&&r&&M&&!no(M)?n.emitter.emitLine(`${t} ${r} = ${M};`):M&&n.emitter.emitLine(`${t} ${M};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}else if(I&&N&&S(I)&&T(I,".",1)){let M=I.args[0].token.value,V=Zn(u,M,n);n.emitter.emitLine(`${t}case ${V}: {`);let O=ro(N,t+" ",n);!o&&r&&O&&!no(O)?n.emitter.emitLine(`${t} ${r} = ${O};`):O&&n.emitter.emitLine(`${t} ${O};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}}}return n.insideMatch=w,n.emitter.emitLine(`${t}}`),o?"":r??""}n.emitter.emitLine(`${t}switch (${l==="ref_semantics"||l?a+"->tag":"("+a+").tag"}) {`);let _=n.insideMatch;n.insideMatch=!0;let d=e.args.slice(1);for(let w=0;w<d.length;w++){let k=d[w];if(S(k)&&T(k,"=>",2)){let b=k.args[0],A=k.args[1];if(b&&A&&H(b)&&b.token.value==="_"){n.emitter.emitLine(`${t}default: {`);let I=ro(A,t+" ",n);!o&&r&&I&&!no(I)?n.emitter.emitLine(`${t} ${r} = ${I};`):I&&n.emitter.emitLine(`${t} ${I};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}else if(b&&A&&S(b)&&b.func.tag==="Atom"&&b.func.token.value==="."&&b.args.length>=1){let I=b.args[0].token.value,N=Zn(u,I,n);if(n.emitter.emitLine(`${t}case ${N}: {`),b.args.length>1){let V=u.variants.find(O=>O.name===I);if(V&&V.fields){let O=b.args.slice(1);if(O.some(P=>S(P)&&T(P,":",2))){for(let P of O)if(S(P)&&T(P,":",2)){let G=P.args[0],U=P.args[1];if(!H(G))continue;let X=G.token.value,re=V.fields.find(ee=>ee.label===X);if(!re||Pe(re.type))continue;if(H(U)){let ee=U.token.value;if(ee!=="_"){let fe=ve(ee),de=ve(X),Q=q(re.type,n),pe=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${Q} ${fe} = ${a}${pe}data.${I}.${de};`);let Z=n;if((Z!=null&&Z.inAsyncStateMachine||Z!=null&&Z.inEffectStateMachine)&&Z.stateMachineVariables){let me;if((h=U.$)!=null&&h.env){let ke=ue(U.$.env,ee);ke.length>0&&(me=ke[ke.length-1].id)}me&&Z.stateMachineVariables.has(me)&&n.emitter.emitLine(`${t} sm->var_${me} = ${fe};`)}}}}}else for(let P=0;P<O.length&&P<V.fields.length;P++){let G=O[P],U=V.fields[P];if(H(G)&&U){if(Pe(U.type))continue;let X=G.token.value;if(X!=="_"){let re=ve(X),ee=ve(U.label),fe=q(U.type,n),de=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${fe} ${re} = ${a}${de}data.${I}.${ee};`);let Q=n;if((Q!=null&&Q.inAsyncStateMachine||Q!=null&&Q.inEffectStateMachine)&&Q.stateMachineVariables){let pe;if((v=G.$)!=null&&v.env){let Z=ue(G.$.env,X);Z.length>0&&(pe=Z[Z.length-1].id)}pe&&Q.stateMachineVariables.has(pe)&&n.emitter.emitLine(`${t} sm->var_${pe} = ${re};`)}}}}}}if(S(A)&&T(A,"=>",2)){let V=A.args[0];n.emitter.emitLine(`${t} ${q(s,n)} ${ve(V.token.value)} = ${a};`),A=A.args[1]}let M=ro(A,t+" ",n);!o&&r&&M&&!no(M)?n.emitter.emitLine(`${t} ${r} = ${M};`):M&&n.emitter.emitLine(`${t} ${M};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}else if(b&&A&&S(b)&&S(b.func)&&b.func.func.tag==="Atom"&&b.func.func.token.value==="."&&b.func.args.length===1){let I=b.func.args[0].token.value,N=Zn(u,I,n),M=b.args;n.emitter.emitLine(`${t}case ${N}: {`);let V=u.variants.find(W=>W.name===I);if(V&&V.fields&&M.length>0)if(M.some(P=>S(P)&&T(P,":",2))){for(let P of M)if(S(P)&&T(P,":",2)){let G=P.args[0],U=P.args[1];if(!H(G))continue;let X=G.token.value,re=V.fields.find(ee=>ee.label===X);if(!re)continue;if(H(U)){let ee=U.token.value;if(ee!=="_"){let fe=ve(ee);if(Pe(re.type))n.emitter.emitLine(`${t} // ${fe} is unit type (no value)`);else{let de=ve(X),Q=q(re.type,n),pe=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${Q} ${fe} = ${a}${pe}data.${I}.${de};`);let Z=n;if((Z!=null&&Z.inAsyncStateMachine||Z!=null&&Z.inEffectStateMachine)&&Z.stateMachineVariables){let me;if((E=U.$)!=null&&E.env){let ke=ue(U.$.env,fe);ke.length>0&&(me=ke[ke.length-1].id)}me&&Z.stateMachineVariables.has(me)&&n.emitter.emitLine(`${t} sm->var_${me} = ${fe};`)}}}}}}else for(let P=0;P<Math.min(M.length,V.fields.length);P++){let G=M[P],U=V.fields[P];if(G.tag==="Atom"&&U){let X=G.token.value;if(X!=="_"){let re=ve(X);if(Pe(U.type))n.emitter.emitLine(`${t} // ${re} is unit type (no value)`);else{let ee=ve(U.label),fe=q(U.type,n),de=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${fe} ${re} = ${a}${de}data.${I}.${ee};`);let Q=n;if((Q!=null&&Q.inAsyncStateMachine||Q!=null&&Q.inEffectStateMachine)&&Q.stateMachineVariables){let pe;if(($=G.$)!=null&&$.env){let Z=ue(G.$.env,X);Z.length>0&&(pe=Z[Z.length-1].id)}pe&&Q.stateMachineVariables.has(pe)&&n.emitter.emitLine(`${t} sm->var_${pe} = ${re};`)}}}}}if(S(A)&&T(A,"=>",2)){let W=A.args[0];n.emitter.emitLine(`${t} ${q(s,n)} ${ve(W.token.value)} = ${a};`),A=A.args[1]}let O=ro(A,t+" ",n);!o&&r&&O&&!no(O)?n.emitter.emitLine(`${t} ${r} = ${O};`):O&&n.emitter.emitLine(`${t} ${O};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}}}return n.insideMatch=_,n.emitter.emitLine(`${t}}`),(C=e.$)!=null&&C.deferredDropExpressions&&bn(e,t,n),o?"":r??""}function U$(e){return S(e)?T(e,"|",2):!1}function uf(e){if(!U$(e))return[e];let t=e,n=t.args[0],r=t.args[1];return[...uf(n),...uf(r)]}function em(e){if(e!==void 0){if(wt(e))return String(e.value);if(Lt(e))return e.value?"true":"false"}}function z$(e,t,n,r,i,o,a){var u,c,f;let s=n.insideMatch;n.insideMatch=!0,n.emitter.emitLine(`${t}switch (${r}) {`);let l=e.args.slice(1);for(let p=0;p<l.length;p++){let _=l[p];if(S(_)&&T(_,"=>",2)){let d=_.args[0],g=_.args[1];if(!d||!g)continue;if(H(d)&&d.token.value==="_"){n.emitter.emitLine(`${t}default: {`);let E=ro(g,t+" ",n);!a&&o&&E&&!no(E)?n.emitter.emitLine(`${t} ${o} = ${E};`):E&&n.emitter.emitLine(`${t} ${E};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`);continue}let y=uf(d),h=(u=d.$)==null?void 0:u.primitivePatternValues;if(h&&h.length>0)for(let E of h){let $=em(E);$!==void 0&&n.emitter.emitLine(`${t}case ${$}:`)}else for(let E of y){let $=(c=E.$)==null?void 0:c.value,C=em($);C!==void 0&&n.emitter.emitLine(`${t}case ${C}:`)}n.emitter.emitLine(`${t}{`);let v=ro(g,t+" ",n);!a&&o&&v&&!no(v)?n.emitter.emitLine(`${t} ${o} = ${v};`):v&&n.emitter.emitLine(`${t} ${v};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}}return n.insideMatch=s,n.emitter.emitLine(`${t}}`),(f=e.$)!=null&&f.deferredDropExpressions&&bn(e,t,n),a?"":o??""}var nm=j(()=>{ft();ce();Ae();ge();zt();vr();fn()});function rm(e,t,n){var r,i;if((r=e.$)!=null&&r.runtimeDestructurings&&e.$.runtimeDestructurings.length>0){let o=e.args[0];if(!o||!((i=o.$)!=null&&i.type))return"// Error: open expression has no argument or type";let a=o.$.type,s=o.$.value;if(ze(a)&&s===void 0){let l=B(o,t,n),u=e.$.runtimeDestructurings;for(let c of u){let f=q(c.type,n),p=ve(c.variableName),_=ve(c.label);n.emitter.emitLine(`${t}${f} ${p} = ${l}.${_};`)}}}return""}var im=j(()=>{Ae();zt();fn()});function om(e,t,n){var g,y,h,v,E;let r=(g=e.$)==null?void 0:g.runtimeArgExprsInOrder;if(!r||r.length!==1)return"/* Error: __yo_thread_spawn requires exactly 1 argument */";let i=r[0],o=(y=i.$)==null?void 0:y.type;if(!o)return"/* Error: __yo_thread_spawn argument has no type */";let a,s;if(z(o)){let $=o;$.resolvedConcreteType&&(a=$.resolvedConcreteType.id,s=$.resolvedConcreteType)}else ze(o)&&(a=o.id,s=o);if(!a||!s)return"/* Error: __yo_thread_spawn could not determine concrete closure type */";let l=n.implClosureCallMap.get(a);if(!l)return`/* Error: __yo_thread_spawn could not find closure function for type ${a} */`;let u=l.functionCName,c=q(s,n),f=B(i,t,n),p=(h=i.$)!=null&&h.variableName?et(i.$.variableName,i.$.env):f,_=`_thread_closure_data_${Nt(((v=e.$)==null?void 0:v.env.modulePath)??"")}`;n.emitter.emitLine(`${t}${c}* ${_} = (${c}*)__yo_malloc(sizeof(${c}));`),n.emitter.emitLine(`${t}*${_} = ${p};`);let d=(E=e.$)==null?void 0:E.variableName;return d?(n.emitter.emitLine(`${t}__yo_thread_t ${d} = __yo_thread_spawn(${u}, ${_});`),d):`__yo_thread_spawn(${u}, ${_})`}function am(e,t,n){var d,g,y,h;let r=(d=e.$)==null?void 0:d.runtimeArgExprsInOrder;if(!r||r.length!==1)return"/* Error: __yo_worker_spawn requires exactly 1 argument */";let i=r[0],o=(g=i.$)==null?void 0:g.type;if(!o)return"/* Error: __yo_worker_spawn argument has no type */";let a,s;if(z(o)){let v=o;v.resolvedConcreteType&&(a=v.resolvedConcreteType.id,s=v.resolvedConcreteType)}else ze(o)&&(a=o.id,s=o);if(!a||!s)return"/* Error: __yo_worker_spawn could not determine concrete closure type */";let l=n.implClosureCallMap.get(a);if(!l)return`/* Error: __yo_worker_spawn could not find closure function for type ${a} */`;let u=l.functionCName,c=q(s,n),f=B(i,t,n),p=(y=i.$)!=null&&y.variableName?et(i.$.variableName,i.$.env):f,_=`_worker_closure_data_${Nt(((h=e.$)==null?void 0:h.env.modulePath)??"")}`;return n.emitter.emitLine(`${t}${c}* ${_} = (${c}*)__yo_malloc(sizeof(${c}));`),n.emitter.emitLine(`${t}*${_} = ${p};`),n.emitter.emitLine(`${t}__yo_worker_spawn(${u}, ${_});`),""}function sm(e,t,n){let r=e.args[0];return r?`__yo_thread_set_maximum_threads(${B(r,t,n)})`:"// Error: __yo_thread_set_maximum_threads requires exactly 1 argument"}var cf=j(()=>{Ae();yn();zt();fn()});function lm(e,t){let n=t;if(!(n.inAsyncStateMachine||n.inEffectStateMachine)||!n.stateMachineVariables)return e;for(let[r,i]of n.stateMachineVariables)if(i.name===e)return`sm->${i.kind==="outer"?`__capture.${i.name}`:`var_${r}`}`;return e}function zr(e,t,n){let r=n;if(!(r.inAsyncStateMachine||r.inEffectStateMachine)||!r.stateMachineVariables)return;let i=r.stateMachineVariables.get(e);if(!i){for(let[,o]of r.stateMachineVariables)if(o.name===e){i=o;break}}if(i&&i.kind!=="outer"){if(i.type&&rt(i.type))return;let o=`var_${i.id}`,a=ve(e);n.emitter.emitLine(`${t}sm->${o} = ${a};`)}}function fm(e,t,n){var o,a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k,b,A,I,N,M,V,O,W,P,G,U,X,re,ee,fe,de,Q,pe,Z,me,ke,Fe,yt,le,Ee,ne,Ie,je,it,Mt,K,J,ae,Se,De,Re,Xe,nt,Wt,ar,Tt,sn,Dr,kt,hn,vn,Bn,kn,Te,be,we,he;if(((o=e.$)==null?void 0:o.value)!==void 0&&!Ge(e.$.value))return(a=e.$)!=null&&a.deferredDropExpressions&&bn(e,t,n),Pe(e.$.type)?"":Jn(e.$.value,n,e);let r=(s=e.func.$)==null?void 0:s.value,i=((l=e.func.$)==null?void 0:l.type)??($e(r)?r.specializedType??r.type:void 0);if(te(i)){let Ce=(u=e.$)==null?void 0:u.runtimeArgExprsInOrder;if(Ce){let Me=!1;if(S(e.func)&&T(e.func,".",2)){let ye=e.func.args[0],Ue=(c=ye==null?void 0:ye.$)==null?void 0:c.type;Ue&&ot(Ue)&&(Me=!0)}let pt=Ce.map((ye,Ue)=>{var We,gt,Ze,tt,Ve,bt,Le,ct,$t;if((We=ye.$)!=null&&We.variableName&&((gt=ye.$)!=null&&gt.type)){let xt=n,Yt=xt.currentClosureCaptures&&xt.currentClosureCaptures.includes(ye.$.variableName)&&H(ye)&&ye.$.env&&xt.currentClosureCaptureFrameLevel!==void 0&&Pi(ye.token.value,ye.$.env,xt.currentClosureCaptureFrameLevel),Pt=B(ye,t,n),qt=!1;if(H(ye)&&ye.$.env&&ye.$.variableName){let cr=ue(ye.$.env,ye.$.variableName);cr.length>0&&cr[cr.length-1].isCompileTimeOnly&&(qt=!0)}let In=(xt.inAsyncStateMachine||xt.inEffectStateMachine)&&Pt.startsWith("sm->"),Fr=!1;if(Pt&&Pt!==ye.$.variableName&&!Yt&&!In&&!qt){let cr=et(ye.$.variableName,ye.$.env);if(Pt!==cr){let yr=ye.$.convertedRuntimeType||ye.$.type,zi=Jt(yr,ye.$.variableName,n);n.emitter.emitLine(`${t}${zi} = ${Pt};`),Fr=!0,zr(ye.$.variableName,t,n)}}let lo=Fr?ye.$.variableName:Pt;if((Ze=ye.$)!=null&&Ze.deferredDupExpressions&&ye.$.deferredDupExpressions.length>0){let cr=new Set;(tt=ye.$)!=null&&tt.variableName&&cr.add(et(ye.$.variableName,ye.$.env)),Pt&&cr.add(Pt),H(ye)&&cr.add(et(ye.token.value,ye.$.env));let yr=ye.$.deferredDupExpressions.find(zi=>{var Do;let uo=bu(zi);return uo?cr.has(et(uo,(Do=zi.$)==null?void 0:Do.env)):!1});yr&&(jt(ye,t,xt),S(yr)&&((Ve=yr.$)!=null&&Ve.variableName)&&(lo=et(yr.$.variableName,yr.$.env)))}if(Me&&Ue===0){if(S(e.func)&&T(e.func,".",2)){let yr=e.func.args[0],zi=(bt=yr==null?void 0:yr.$)==null?void 0:bt.type,uo=e.func.args[1];if(H(uo)&&ot(zi)){let Do=uo.token.value;if(zi.trait.fields.find(uc=>uc.label===Do))return In?Pt:ve(lo,ye.$.type.isExtern==="c")}}let cr=(Le=ye.$)==null?void 0:Le.type;return cr&&_t(cr)?In?`${Pt}->data`:`${ve(lo,ye.$.type.isExtern==="c")}->data`:In?`(${Pt}).data`:`(${ve(lo,ye.$.type.isExtern==="c")}).data`}else return Yt||In||qt?Pt:ve(lo,ye.$.type.isExtern==="c")}else if(Me&&Ue===0){let xt=B(ye,t,n);if(S(e.func)&&T(e.func,".",2)){let Pt=e.func.args[0],qt=(ct=Pt==null?void 0:Pt.$)==null?void 0:ct.type,In=e.func.args[1];if(H(In)&&ot(qt)){let Fr=In.token.value;if(qt.trait.fields.find(cr=>cr.label===Fr))return xt}}let Yt=($t=ye.$)==null?void 0:$t.type;return Yt&&_t(Yt)?`(${xt})->data`:`(${xt}).data`}else return B(ye,t,n)}),Oe=pt.join(", ");if(i.isExtern==="yo"&&i.externName){let ye=i.externName;return ta.includes(ye)?Xs(ye,pt,e,n,t):ye==="__yo_thread_spawn"?om(e,t,n):ye==="__yo_worker_spawn"?am(e,t,n):Pe(i.return.type)?(n.emitter.emitLine(`${t}${ye}(${Oe});`),(f=e.$)!=null&&f.deferredDropExpressions&&bn(e,t,n),""):`${ye}(${Oe})`}{let ye=n;if((p=ye.currentEvidenceParams)!=null&&p.size){let Ue=(_=e.func.token)==null?void 0:_.value,We;if(Ue==="."&&S(e.func)&&T(e.func,".",2)){let gt=e.func.args[1];gt&&H(gt)&&(Ue=gt.token.value);let Ze=e.func.args[0];if(Ze&&H(Ze))We=Ze.token.value;else if(Ze&&S(Ze)&&T(Ze,".",2)){let tt=Ze.args[0];tt&&H(tt)&&(We=tt.token.value)}}if(Ue&&Ue!=="."){for(let gt of ye.currentEvidenceParams.values())if(gt.fieldLabel===Ue||gt.implicitLabel===Ue||gt.fieldPath[gt.fieldPath.length-1]===Ue){if(We&&We!==gt.implicitLabel)continue;return cm(gt.cParamName,i,pt,Ce,e,t,ye,gt)}}}}if($e(r)){let ye=Ra(r);if(ye)return Xs(ye,pt,e,n,t);let Ue=r.specializedType??r.type,We=n;if(We.currentEvidenceParams&&r.isModuleEffectMember){let Ze,tt=((d=e.func.$)==null?void 0:d.env)??((g=e.$)==null?void 0:g.env);if(tt)for(let Ve of We.currentEvidenceParams.values()){let bt=ue(tt,Ve.implicitLabel),Le=bt[bt.length-1],ct=(y=Le==null?void 0:Le.value)==null?void 0:y[0];if(ct&&At(ct)){let $t=ct,xt=!0;for(let Yt=0;Yt<Ve.fieldPath.length-1;Yt++){let Pt=Ve.fieldPath[Yt],qt=$t.type.fields.findIndex(In=>In.label===Pt);if(qt>=0&&$t.fields[qt]&&At($t.fields[qt]))$t=$t.fields[qt];else{xt=!1;break}}if(xt){let Yt=Ve.fieldPath[Ve.fieldPath.length-1],Pt=$t.type.fields.findIndex(qt=>qt.label===Yt);if(Pt>=0){let qt=$t.fields[Pt];if(qt&&$e(qt)&&qt.funcId===r.funcId){Ze=Ve;break}}}}}if(Ze){let Ve=Ze.cParamName;return cm(Ve,Ue,pt,Ce,e,t,We,Ze)}}let gt=(h=n.functions[r.funcId])==null?void 0:h.cName;if(gt){let Ze=r.specializedType??r.type,tt=An(Ze);if(tt.length===0&&r.specializedType){let Le=An(r.type);Le.length>0&&Le.some(ct=>ct.fieldFunctionType.forallParameters&&ct.fieldFunctionType.forallParameters.length>0)&&(tt=Le)}if(tt.length>0){let{args:Le,isHandlerInstallation:ct}=ff(tt,r,e,n);if(Le.length>0){let $t=Oe?`${Oe}, ${Le.join(", ")}`:Le.join(", ");return pf(gt,$t,Ue,e,Ce,t,n,ct)}}let Ve=r.isControlFunction||r.isModuleEffectMember||(($=(E=(v=r.body)==null?void 0:v.$)==null?void 0:E.effectAnalysis)==null?void 0:$.hasEffects),bt=!1;if(Ve){if(r.isControlFunction||r.isModuleEffectMember){let Le=((w=(C=e.func)==null?void 0:C.$)==null?void 0:w.env)??((k=e.$)==null?void 0:k.env);if(Le){let ct=Ps(Le,$t=>{var xt;return $t.isImplicit===!0&&$e((xt=$t.value)==null?void 0:xt[0])&&$t.value[0].funcId===r.funcId});ct>=0&&ct>Le.functionDeclarationFrameLevel&&((b=Le.frames[ct])!=null&&b.isBeginBlockFrame)&&(bt=!0)}}else if(r.specializedType){let Le=An(r.type);if(Le.length>0){let ct=((I=(A=e.func)==null?void 0:A.$)==null?void 0:I.env)??((N=e.$)==null?void 0:N.env);if(ct)for(let $t of Le){let xt=Ps(ct,Yt=>Yt.isImplicit===!0&&(Yt.name===$t.implicitLabel||Yt.name===$t.fieldLabel));if(xt>=0&&xt>ct.functionDeclarationFrameLevel&&((M=ct.frames[xt])!=null&&M.isBeginBlockFrame)){bt=!0;break}}}}}if(Pe(Ue.return.type))return n.emitter.emitLine(`${t}${gt}(${Oe});`),(V=e.$)!=null&&V.deferredDropExpressions&&bn(e,t,n),Ve&&um(t,n,bt,e),"";{let Le=(O=e.$)==null?void 0:O.variableName;if(Le){let ct=((W=r.specializedType)==null?void 0:W.return.type)??Ue.return.type,$t=(P=e.$)==null?void 0:P.type,xt=$t&&rt($t),Yt=ct&&rt(ct),Pt;if(xt&&Yt){let qt=r.body;if(qt&&T(qt,"begin")){let In=qt.args;if(In.length>0){let Fr=In[In.length-1];qn(Fr)&&(qt=Fr)}}if(qt&&qn(qt)&&((G=qt.$)!=null&&G.asyncStateMachineStructName)){let In=qt.$.asyncStateMachineStructName;Pt=`${In}*`,n.tempVarAsyncStructNames||(n.tempVarAsyncStructNames=new Map),n.tempVarAsyncStructNames.set(Le,In)}else $t&&z($t)&&$t.resolvedConcreteType?Pt=q($t,n):Pt=q(ct,n)}else Pt=q(ct??$t,n);return n.emitter.emitLine(`${t}${Pt} ${Le} = ${gt}(${Oe});`),zr(Le,t,n),(U=e.$)!=null&&U.deferredDropExpressions&&bn(e,t,n),Ve&&um(t,n,bt,e),Le}else return`// Error: Regular function call returns ${q(((X=r.specializedType)==null?void 0:X.return.type)??Ue.return.type,n)} but no temp variable assigned`}}}else{let ye=n.externFunctions[i.id];if(ye){let Ue=ye.cName;return(re=e.$)!=null&&re.deferredDropExpressions&&bn(e,t,n),`${Ue}(${Oe})`}else{let Ue=B(e.func,t,n);if(r&&te(r.type)){let Le=An(r.type);if(Le.length>0){let{args:ct,isHandlerInstallation:$t}=ff(Le,r,e,n);if(ct.length>0){let xt=Oe?`${Oe}, ${ct.join(", ")}`:ct.join(", ");return pf(Ue,xt,i,e,Ce,t,n,$t)}}}let We=((ee=e.$)==null?void 0:ee.type)??i.return.type,gt=q(We,n),Ze=i.parameters.filter(Le=>!Le.isCompileTimeOnly).map(Le=>q(Le.type,n)),tt=`((${gt} (*)(${Ze.join(", ")}))${Ue})`,Ve=n,bt=Ue.includes("__capture.")&&!!Ve.inAsyncStateMachine;if(bt&&n.emitter.emitLine(`${t}__yo_effect_escaped = 0;`),Pe(i.return.type)||Pe(We)){if(n.emitter.emitLine(`${t}${tt}(${Oe});`),(fe=e.$)!=null&&fe.deferredDropExpressions&&bn(e,t,n),bt){if(n.emitter.emitLine(`${t}if (__yo_effect_escaped) {`),Ce){for(let Le of Ce)if((de=Le.$)!=null&&de.variableName&&((Q=Le.$)!=null&&Q.type)&&ut(Le.$.type)){let ct=lm(ve(Le.$.variableName),n),$t=eo(ct,Le.$.type,n);$t&&(n.emitter.emitLine(`${t} ${$t};`),n.emitter.emitLine(`${t} memset(&${ct}, 0, sizeof(${ct}));`))}}ei({emitter:n.emitter,indent:t+" ",resultCode:void 0,debugLabel:void 0}),n.emitter.emitLine(`${t}}`)}return""}else{let Le=(pe=e.$)==null?void 0:pe.variableName;if(Le){let ct=i.return.type,$t=(Z=e.$)==null?void 0:Z.type,xt=$t&&ct&&rt($t)&&rt(ct)?ct:$t??ct;if(n.emitter.emitLine(`${t}${q(xt,n)} ${Le} = ${tt}(${Oe});`),zr(Le,t,n),(me=e.$)!=null&&me.deferredDropExpressions&&bn(e,t,n),bt){if(n.emitter.emitLine(`${t}if (__yo_effect_escaped) {`),Ce){for(let Yt of Ce)if((ke=Yt.$)!=null&&ke.variableName&&((Fe=Yt.$)!=null&&Fe.type)&&ut(Yt.$.type)){let Pt=lm(ve(Yt.$.variableName),n),qt=eo(Pt,Yt.$.type,n);qt&&(n.emitter.emitLine(`${t} ${qt};`),n.emitter.emitLine(`${t} memset(&${Pt}, 0, sizeof(${Pt}));`))}}ei({emitter:n.emitter,indent:t+" ",resultCode:void 0,debugLabel:void 0}),n.emitter.emitLine(`${t}}`)}return Le}else return`// Error: Function parameter call returns ${q(i.return.type,n)} but no temp variable assigned`}}}}}else if(i&&Qn(i)){let Ce=i,Me=or(Ce),pt=ot(Ce);{let Oe=Me.isFn.callType,ye=(yt=e.$)==null?void 0:yt.runtimeArgExprsInOrder;if(ye){let Ue=n;for(let Ve of ye)if((le=Ve.$)!=null&&le.variableName&&((Ee=Ve.$)!=null&&Ee.type)){let bt=Ue.currentClosureCaptures&&Ue.currentClosureCaptures.includes(Ve.$.variableName)&&H(Ve)&&Ve.$.env&&Ue.currentClosureCaptureFrameLevel!==void 0&&Pi(Ve.token.value,Ve.$.env,Ue.currentClosureCaptureFrameLevel),Le=B(Ve,t,n),ct=!1;if(H(Ve)&&Ve.$.env&&Ve.$.variableName){let xt=ue(Ve.$.env,Ve.$.variableName);xt.length>0&&xt[xt.length-1].isCompileTimeOnly&&(ct=!0)}let $t=(Ue.inAsyncStateMachine||Ue.inEffectStateMachine)&&Le.startsWith("sm->");if(Le&&Le!==Ve.$.variableName&&!bt&&!$t&&!ct){let xt=Ve.$.convertedRuntimeType||Ve.$.type,Yt=Jt(xt,Ve.$.variableName,n);n.emitter.emitLine(`${t}${Yt} = ${Le};`),zr(Ve.$.variableName,t,n)}}let We=B(e.func,t,n),gt=ye.map(Ve=>{var bt,Le,ct,$t;if((bt=Ve.$)!=null&&bt.variableName&&((Le=Ve.$)!=null&&Le.type)){if(Ue.currentClosureCaptures&&Ue.currentClosureCaptures.includes(Ve.$.variableName)&&H(Ve)&&Ve.$.env&&Ue.currentClosureCaptureFrameLevel!==void 0&&Pi(Ve.token.value,Ve.$.env,Ue.currentClosureCaptureFrameLevel))return B(Ve,t,n);{let Yt=et(Ve.$.variableName,Ve.$.env),Pt=(Ue.inAsyncStateMachine||Ue.inEffectStateMachine)&&Yt.startsWith("sm->"),qt=Yt;if((ct=Ve.$)!=null&&ct.deferredDupExpressions&&Ve.$.deferredDupExpressions.length>0){jt(Ve,t,Ue);let In=Ve.$.deferredDupExpressions[0];S(In)&&(($t=In.$)!=null&&$t.variableName)&&(qt=et(In.$.variableName,In.$.env))}return Pt?Yt:qt}}else return B(Ve,t,n)}),Ze;if(pt){let Ve=[`(${We}).data`,...gt];Ze=`(${We}).vtable->call(${Ve.join(", ")})`}else{let Ve;if(z(Ce)){let Le=Ce;Le.resolvedConcreteType&&(Ve=Le.resolvedConcreteType.id)}let bt=Ve?n.implClosureCallMap.get(Ve):void 0;if(bt){let Le=An(Oe);if(Le.length>0){let{args:$t,isHandlerInstallation:xt}=ff(Le,{},e,Ue);if($t.length>0){let Yt=[`&(${We})`,...gt,...$t];return pf(bt.functionCName,Yt.join(", "),Oe,e,ye,t,Ue,xt)}}let ct=[`&(${We})`,...gt];Ze=`${bt.functionCName}(${ct.join(", ")})`}else{let Le=[`(${We}).data`,...gt];Ze=`(${We}).call(${Le.join(", ")})`}}let tt=Oe.return.type;if(Pe(tt))return n.emitter.emitLine(`${t}${Ze};`),(ne=e.$)!=null&&ne.deferredDropExpressions&&bn(e,t,n),"";{let Ve=(Ie=e.$)==null?void 0:Ie.variableName;return Ve?(n.emitter.emitLine(`${t}${q(tt,n)} ${Ve} = ${Ze};`),zr(Ve,t,n),(je=e.$)!=null&&je.deferredDropExpressions&&bn(e,t,n),Ve):`// Error: Closure call returns ${q(tt,n)} but no temp variable assigned`}}else return"// Error: No runtime args found for closure call"}}else if(Y(r))if(ze(r.value)){let Ce=r.value,Me=(it=e.$)==null?void 0:it.runtimeArgExprsInOrder,pt=(Mt=n.types[Ce.id])==null?void 0:Mt.cName,Oe=Ce.fields.map(Ue=>Ue.label),ye=(K=e.$)==null?void 0:K.variableName;if(Me&&pt&&Oe.length===Me.length){if(Ce.isNewtype&&Ce.fields.length===1){let Ue=Me[0],We=B(Ue,t,n),gt=We;if((J=Ue.$)!=null&&J.deferredDupExpressions&&Ue.$.deferredDupExpressions.length>0){let tt=n;if((ae=Ue.$)!=null&&ae.variableName&&((Se=Ue.$)!=null&&Se.type)){let bt=et(Ue.$.variableName,Ue.$.env);if(We!==bt){let Le=Ue.$.type,ct=q(Le,n);n.emitter.emitLine(`${t}${ct} ${bt} = ${We};`)}}jt(Ue,t,tt);let Ve=Ue.$.deferredDupExpressions[0];S(Ve)&&((De=Ve.$)!=null&&De.variableName)&&(gt=et(Ve.$.variableName,Ve.$.env))}let Ze=`((${pt})(${gt}))`;if(ye&&((Re=e.$)!=null&&Re.type)){let tt=Jt(e.$.type,ye,n);return n.emitter.emitLine(`${t}${tt} = ${Ze};`),zr(ye,t,n),ye}else return Ze}if(Ce.isReferenceSemantics){let Ue=n,We=Me.map(tt=>{var bt,Le,ct,$t;let Ve=B(tt,t,n);if((bt=tt.$)!=null&&bt.deferredDupExpressions&&tt.$.deferredDupExpressions.length>0){if((Le=tt.$)!=null&&Le.variableName&&((ct=tt.$)!=null&&ct.type)){let Yt=et(tt.$.variableName,tt.$.env);if(Ve!==Yt){let Pt=tt.$.type,qt=q(Pt,n);n.emitter.emitLine(`${t}${qt} ${Yt} = ${Ve};`)}}jt(tt,t,Ue);let xt=tt.$.deferredDupExpressions[0];if(S(xt)&&(($t=xt.$)!=null&&$t.variableName))return et(xt.$.variableName,xt.$.env)}return Ve}).join(", "),Ze=`${`__yo_new_${pt}`}(${We})`;if(ye&&((Xe=e.$)!=null&&Xe.type)){let tt=Jt(e.$.type,ye,n);return n.emitter.emitLine(`${t}${tt} = ${Ze};`),zr(ye,t,n),ye}else return Ze}else{let Ue=n,We=Me.map((Ze,tt)=>{var ct,$t,xt,Yt;let Ve=B(Ze,t,n),bt=st(Ce)?`_${tt}`:ve(Oe[tt],Ce.isExtern==="c"),Le=Ve;if((ct=Ze.$)!=null&&ct.deferredDupExpressions&&Ze.$.deferredDupExpressions.length>0){if(($t=Ze.$)!=null&&$t.variableName&&((xt=Ze.$)!=null&&xt.type)){let qt=et(Ze.$.variableName,Ze.$.env),In=Ze.$.type,Fr=q(In,n);Ve!==qt&&n.emitter.emitLine(`${t}${Fr} ${qt} = ${Ve};`)}jt(Ze,t,Ue);let Pt=Ze.$.deferredDupExpressions[0];S(Pt)&&((Yt=Pt.$)!=null&&Yt.variableName)&&(Le=et(Pt.$.variableName,Pt.$.env))}return`.${bt} = `+Le}).join(", "),gt=`(${pt}){ ${We} }`;if(ye&&((nt=e.$)!=null&&nt.type)){let Ze=Jt(e.$.type,ye,n);return n.emitter.emitLine(`${t}${Ze} = ${gt};`),zr(ye,t,n),ye}else return gt}}}else{if(Qn(r.value))return"// Error: Closure construction should have been handled by closureFunctionValue check at top of generateFuncCall";if(ln(r.value)){let Ce=(Wt=e.$)==null?void 0:Wt.variableName,Me=e.args[0];if(Me&&S(Me)&&T(Me,":",2)){let pt=Me.args[0],Oe=Me.args[1],ye=(ar=n.types[r.value.id])==null?void 0:ar.cName;if(ye&&H(pt)&&Oe){let Ue=n,We=pt.token.value,gt=et(We,(Tt=pt.$)==null?void 0:Tt.env),tt=B(Oe,t,n);if((sn=Oe.$)!=null&&sn.deferredDupExpressions&&Oe.$.deferredDupExpressions.length>0){jt(Oe,t,Ue);let bt=Oe.$.deferredDupExpressions[0];S(bt)&&((Dr=bt.$)!=null&&Dr.variableName)&&(tt=et(bt.$.variableName,bt.$.env))}let Ve=`(${ye}){ .${gt} = ${tt} }`;if(Ce&&((kt=e.$)!=null&&kt.type)){let bt=Jt(e.$.type,Ce,n);return n.emitter.emitLine(`${t}${bt} = ${Ve};`),zr(Ce,t,n),Ce}else return Ve}}}else if(qe(r.value)){let Ce=r.value,Me=(hn=e.$)==null?void 0:hn.runtimeArgExprsInOrder,pt=(vn=n.types[Ce.id])==null?void 0:vn.cName,Oe=(Bn=e.$)==null?void 0:Bn.variableName;if(Ce.selectedVariantName&&Me&&pt){if(Hn(Ce)){let Ze=Ce.selectedVariantName,tt=Ce.variants.find(Ve=>Ve.name===Ze);if(tt){if(!tt.fields||tt.fields.length===0){let Ve="NULL";if(Oe&&((kn=e.$)!=null&&kn.type)){let bt=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${bt} = ${Ve};`),zr(Oe,t,n),Oe}else return Ve}else if(tt.fields.length===1){let Ve=B(Me[0],t,n);if(Oe&&((Te=e.$)!=null&&Te.type)){let bt=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${bt} = ${Ve};`),zr(Oe,t,n),Oe}else return Ve}}}if(Ur(Ce)){let Ze=Ce.selectedVariantName,tt=Zn(Ce,Ze,n);if(Oe&&((be=e.$)!=null&&be.type)){let Ve=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${Ve} = ${tt};`),zr(Oe,t,n),Oe}else return tt}let We=Ce.selectedVariantName,gt=Ce.variants.find(Ze=>Ze.name===We);if(gt){let Ze=((we=gt.fields)==null?void 0:we.filter(Le=>!Pe(Le.type)))||[],tt=n,Ve=Me.map((Le,ct)=>{var $t,xt,Yt,Pt,qt;if(gt.fields){let In=gt.fields[ct];if(In&&!Pe(In.type)){let Fr=B(Le,t,n),lo=et(In.label,($t=Le.$)==null?void 0:$t.env),cr=Fr;if((xt=Le.$)!=null&&xt.variableName&&((Yt=Le.$)!=null&&Yt.type)){let yr=tt.currentClosureCaptures&&tt.currentClosureCaptures.includes(Le.$.variableName)&&H(Le)&&Le.$.env&&tt.currentClosureCaptureFrameLevel!==void 0&&Pi(Le.token.value,Le.$.env,tt.currentClosureCaptureFrameLevel),zi=(tt.inAsyncStateMachine||tt.inEffectStateMachine)&&Fr.startsWith("sm->"),uo=!1;if(H(Le)&&Le.$.env&&Le.$.variableName){let fa=ue(Le.$.env,Le.$.variableName);fa.length>0&&fa[fa.length-1].isCompileTimeOnly&&(uo=!0)}let Do=!1;if(Fr&&Fr!==Le.$.variableName&&!yr&&!zi&&!uo){let fa=et(Le.$.variableName,Le.$.env);if(Fr!==fa){let uc=Jt(Le.$.type,Le.$.variableName,n);n.emitter.emitLine(`${t}${uc} = ${Fr};`),Do=!0,zr(Le.$.variableName,t,n)}}Do&&(cr=et(Le.$.variableName,Le.$.env))}if((Pt=Le.$)!=null&&Pt.deferredDupExpressions&&Le.$.deferredDupExpressions.length>0){jt(Le,t,tt);let yr=Le.$.deferredDupExpressions[0];S(yr)&&((qt=yr.$)!=null&&qt.variableName)&&(cr=et(yr.$.variableName,yr.$.env))}return`.${lo} = `+cr}return""}else return""}).filter(Le=>Le).join(", "),bt=Ze.length>0?`(${pt}){ .tag = ${Zn(Ce,We,n)}, .data = { .${We} = { ${Ve} } } }`:`(${pt}){ .tag = ${Zn(Ce,We,n)} }`;if(Oe&&((he=e.$)!=null&&he.type)){let Le=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${Le} = ${bt};`),zr(Oe,t,n),Oe}else return bt}}}}else if(at(i)){let Ce=e.args[0];if(Ce&&S(Ce)&&T(Ce,":")){let Oe=B(e.func,t,n),ye=B(Ce.args[0],t,n),Ue=B(Ce.args[1],t,n),We=`Slice_${ve(q(i.childType,n))}`;return n.sliceStructTypes.has(We)||n.sliceStructTypes.set(We,{childType:q(i.childType,n)}),`(${We}){ .data = &${Oe}.data[${ye}], .length = (${Ue}) - (${ye}) }`}else if(Ce&&H(Ce)&&Ce.token.value===":"){let Oe=B(e.func,t,n),ye=i,Ue=ye.childType,We=`Slice_${ve(q(Ue,n))}`;return n.sliceStructTypes.has(We)||n.sliceStructTypes.set(We,{childType:q(Ue,n)}),wt(ye.length)?`(${We}){ .data = &${Oe}.data[0], .length = ${ye.length.value} }`:"/* Error: Cannot slice array with non-compile-time length */"}let Me=B(e.func,t,n),pt=B(Ce,t,n);return`${Me}.data[${pt}]`}else if(Rt(i)){let Ce=e.args[0];if(Ce&&S(Ce)&&T(Ce,":")){let Oe=B(e.func,t,n),ye=B(Ce.args[0],t,n),Ue=B(Ce.args[1],t,n),We=`Slice_${ve(q(i.childType,n))}`;return n.sliceStructTypes.has(We)||n.sliceStructTypes.set(We,{childType:q(i.childType,n)}),`(${We}){ .data = &${Oe}.data[${ye}], .length = (${Ue}) - (${ye}) }`}else if(Ce&&H(Ce)&&Ce.token.value===":"){let Oe=B(e.func,t,n),ye=`Slice_${ve(q(i.childType,n))}`;return n.sliceStructTypes.has(ye)||n.sliceStructTypes.set(ye,{childType:q(i.childType,n)}),`(${ye}){ .data = ${Oe}.data, .length = ${Oe}.length }`}let Me=B(e.func,t,n),pt=B(Ce,t,n);return`${Me}.data[${pt}]`}else if(i&&_t(i)&&Rt(i.childType)){let Ce=B(e.func,t,n),Me=B(e.args[0],t,n);return`${Ce}.data[${Me}]`}}function um(e,t,n,r){var o,a;let i=t.emitter;if(i.emitLine(`${e}if (__yo_effect_escaped) {`),t.inAsyncStateMachine||(Tr(e+" ",t,r,!1,!0,!1),Ei(e+" ",t,r)),t.inAsyncStateMachine)n&&i.emitLine(`${e} __yo_effect_escaped = 0;`),ei({emitter:i,indent:e+" ",resultCode:void 0,debugLabel:void 0});else if(n){i.emitLine(`${e} __yo_effect_escaped = 0;`);let s=(o=t.currentFunctionType)==null?void 0:o.return.type;if(s&&!Pe(s)){let l=q(s,t);l!=="void"?(i.emitLine(`${e} ${l} _esc_result;`),i.emitLine(`${e} memcpy(&_esc_result, __yo_effect_escape_value, sizeof(${l}));`),i.emitLine(`${e} return _esc_result;`)):i.emitLine(`${e} return;`)}else i.emitLine(`${e} return;`)}else{let s=(a=t.currentFunctionType)==null?void 0:a.return.type;if(s&&!Pe(s)){let l=q(s,t);l!=="void"?i.emitLine(`${e} return (${l}){0};`):i.emitLine(`${e} return;`)}else i.emitLine(`${e} return;`)}i.emitLine(`${e}}`)}function cm(e,t,n,r,i,o,a,s){var p,_,d,g,y,h,v,E,$,C,w,k;let l=n.join(", "),u=t.return.type,c=a.emitter,f;if(s!=null&&s.fieldFunctionType.forallParameters&&s.fieldFunctionType.forallParameters.length>0){let b=(p=i.$)!=null&&p.type?q(i.$.type,a):q(u,a),A=[],N=s.fieldFunctionType.parameters.filter(V=>!V.isCompileTimeOnly);for(let V=0;V<N.length;V++){let O=N[V].type,W=z(O)&&((d=(_=r==null?void 0:r[V])==null?void 0:_.$)!=null&&d.type)?r[V].$.type:O,P=te(W)?Ri(W,"(*)",a):q(W,a);A.push(P)}let M=A.join(", ");f=`((${b} (*)(${M}))${e})`}else f=e;if(Pe(u)){if(c.emitLine(`${o}${f}(${l});`),(g=i.$)!=null&&g.deferredDropExpressions&&bn(i,o,a),c.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,i,!1,!0,!1),Ei(o+" ",a,i)),a.inAsyncStateMachine)ei({emitter:c,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let b=(y=a.currentFunctionType)==null?void 0:y.return.type;if(b&&!Pe(b)){let A=q(b,a);A!=="void"?c.emitLine(`${o} return (${A}){0};`):c.emitLine(`${o} return;`)}else c.emitLine(`${o} return;`)}return c.emitLine(`${o}}`),""}else{let b=(h=i.$)==null?void 0:h.variableName;if(b){let A=(v=s==null?void 0:s.fieldFunctionType.forallParameters)!=null&&v.length&&((E=i.$)!=null&&E.type)?i.$.type:u,I=q(A,a);if(I==="void"||Pe(A)){if(c.emitLine(`${o}${f}(${l});`),($=i.$)!=null&&$.deferredDropExpressions&&bn(i,o,a),c.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,i,!1,!0,!1),Ei(o+" ",a,i)),a.inAsyncStateMachine)ei({emitter:c,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let N=(C=a.currentFunctionType)==null?void 0:C.return.type;if(N&&!Pe(N)){let M=q(N,a);M!=="void"?c.emitLine(`${o} return (${M}){0};`):c.emitLine(`${o} return;`)}else c.emitLine(`${o} return;`)}return c.emitLine(`${o}}`),""}if(c.emitLine(`${o}${I} ${b} = ${f}(${l});`),(w=i.$)!=null&&w.deferredDropExpressions&&bn(i,o,a),c.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,i,!1,!0,!1),Ei(o+" ",a,i)),a.inAsyncStateMachine)ei({emitter:c,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let N=(k=a.currentFunctionType)==null?void 0:k.return.type;if(N&&!Pe(N)){let M=q(N,a);M!=="void"?c.emitLine(`${o} return (${M}){0};`):c.emitLine(`${o} return;`)}else c.emitLine(`${o} return;`)}return c.emitLine(`${o}}`),b}else return`${f}(${l})`}}function ff(e,t,n,r){var s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k;let i=[],o=(l=(s=t.body)==null?void 0:s.$)==null?void 0:l.effectAnalysis,a=!1;for(let b of e){let A=`${b.implicitLabel}.${b.fieldLabel}`,I=!1;if(r.currentEvidenceParams){let N=r.currentEvidenceParams.get(A);N&&(i.push(N.cParamName),I=!0)}if(!I){if(o){if(o.effectHandlerInfos)for(let N of o.effectHandlerInfos){if(N.effectParameterName!==b.fieldLabel&&N.effectParameterName!==b.implicitLabel)continue;let M=N.handlerValue;if(M&&$e(M)){if((u=M.specializedFunctionCaches)!=null&&u.length){let O=M.specializedFunctionCaches[0].specializedFunction,W=(c=r.functions[O.funcId])==null?void 0:c.cName;if(W){i.push(`(void*)${W}`),I=!0,a=!0;break}}let V=(f=r.functions[M.funcId])==null?void 0:f.cName;if(V){i.push(V),I=!0,a=!0;break}}}if(!I&&o.handlerValue&&e.length===1){let N=o.handlerValue;if(N&&$e(N)){if((p=N.specializedFunctionCaches)!=null&&p.length){let M=N.specializedFunctionCaches[0].specializedFunction,V=(_=r.functions[M.funcId])==null?void 0:_.cName;V&&(i.push(`(void*)${V}`),I=!0,a=!0)}if(!I){let M=(d=r.functions[N.funcId])==null?void 0:d.cName;M&&(i.push(M),I=!0,a=!0)}}}}if(!I){let N=((g=n.func.$)==null?void 0:g.env)??((y=n.$)==null?void 0:y.env);if(N){let M=ue(N,b.implicitLabel),V=hr(N,U=>U.isImplicit===!0&&te(U.type)&&te(b.fieldFunctionType)&&U.type===b.fieldFunctionType),O=M[M.length-1],W=V[V.length-1],P=W&&W!==O?W:O??W,G=(h=P==null?void 0:P.value)==null?void 0:h[0];if(G&&At(G)){let U=G,X=!0;for(let re=0;re<b.fieldPath.length-1;re++){let ee=b.fieldPath[re],fe=U.type.fields.findIndex(de=>de.label===ee);if(fe>=0&&U.fields[fe]&&At(U.fields[fe]))U=U.fields[fe];else{X=!1;break}}if(X){let re=b.fieldPath[b.fieldPath.length-1],ee=U.type.fields.findIndex(fe=>fe.label===re);if(ee>=0){let fe=U.fields[ee];if(fe&&$e(fe)){if(((v=fe.specializedFunctionCaches)==null?void 0:v.length)>0){let de=fe.specializedFunctionCaches[0].specializedFunction,Q=(E=r.functions[de.funcId])==null?void 0:E.cName;Q&&(i.push(`(void*)${Q}`),I=!0)}if(!I){let de=($=r.functions[fe.funcId])==null?void 0:$.cName;de&&(i.push(de),I=!0)}}}}}else if(G&&$e(G)){if((C=G.specializedFunctionCaches)!=null&&C.length){let U=G.specializedFunctionCaches[0].specializedFunction,X=(w=r.functions[U.funcId])==null?void 0:w.cName;X&&(i.push(`(void*)${X}`),I=!0)}if(!I){let U=(k=r.functions[G.funcId])==null?void 0:k.cName;U&&(i.push(U),I=!0)}}I&&(a=!0)}}if(!I&&r.stateMachineVariables){let N=b.fieldPath[b.fieldPath.length-1];for(let[,M]of r.stateMachineVariables)if(M.name===N&&M.kind==="outer"){i.push(`sm->__capture.${N}`),I=!0;break}}if(!I)break}}return{args:i,isHandlerInstallation:a}}function pf(e,t,n,r,i,o,a,s=!1){var c,f,p,_,d;let l=a.emitter,u=n.return.type;if(l.emitLine(`${o}__yo_effect_escaped = 0;`),Pe(u)){if(l.emitLine(`${o}${e}(${t});`),(c=r.$)!=null&&c.deferredDropExpressions&&bn(r,o,a),l.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,r,!1,!0,!1),Ei(o+" ",a,r)),a.inAsyncStateMachine)ei({emitter:l,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let g=(f=a.currentFunctionType)==null?void 0:f.return.type;if(s&&l.emitLine(`${o} __yo_effect_escaped = 0;`),g&&!Pe(g))if(s){let y=q(g,a);y!=="void"?(l.emitLine(`${o} ${y} _esc_result;`),l.emitLine(`${o} memcpy(&_esc_result, __yo_effect_escape_value, sizeof(${y}));`),l.emitLine(`${o} return _esc_result;`)):l.emitLine(`${o} return;`)}else{let y=q(g,a);y!=="void"?l.emitLine(`${o} return (${y}){0};`):l.emitLine(`${o} return;`)}else l.emitLine(`${o} return;`)}return l.emitLine(`${o}}`),""}else{let g=(p=r.$)==null?void 0:p.variableName;if(g){let y=q(u,a);if(l.emitLine(`${o}${y} ${g} = ${e}(${t});`),zr(g,o,a),(_=r.$)!=null&&_.deferredDropExpressions&&bn(r,o,a),l.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,r,!1,!0,!1),Ei(o+" ",a,r)),a.inAsyncStateMachine)ei({emitter:l,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let h=(d=a.currentFunctionType)==null?void 0:d.return.type;if(s&&h&&!Pe(h)){let v=q(h,a);l.emitLine(`${o} ${v} _esc_result;`),l.emitLine(`${o} memcpy(&_esc_result, __yo_effect_escape_value, sizeof(${v}));`),l.emitLine(`${o} __yo_effect_escaped = 0;`),l.emitLine(`${o} return _esc_result;`)}else if(h&&!Pe(h)){let v=q(h,a);v!=="void"?l.emitLine(`${o} return (${v}){0};`):l.emitLine(`${o} return;`)}else s&&l.emitLine(`${o} __yo_effect_escaped = 0;`),l.emitLine(`${o} return;`)}return l.emitLine(`${o}}`),g}else return`${e}(${t})`}}var pm=j(()=>{ft();Jr();Gt();ce();Ae();Je();ge();zs();qa();zt();ea();Hs();Ua();vr();fn();sf();cf();Ks()});function _m(e,t,n){var a,s;let r=n.emitter,i=(a=e.$)==null?void 0:a.type;if(!i)return"// Error: panic() missing type information";if(e.args.length===0)r.emitLine(`${t}abort();`);else if(e.args.length===1){let l=e.args[0];if((s=l.$)!=null&&s.value&&St(l.$.value)){let u=l.$.value.value;r.emitLine(`${t}fprintf(stderr, "%s\\n", ${JSON.stringify(u)});`),r.emitLine(`${t}abort();`)}else{let u=B(l,t,n);r.emitLine(`${t}fprintf(stderr, "%s\\n", ${u});`),r.emitLine(`${t}abort();`)}}else return`// Error: panic accepts 0 or 1 arguments, got ${e.args.length}`;return`(*((${q(i,n)}*)NULL))`}var dm=j(()=>{ge();zt();fn()});function mm(e,t,n){var l,u,c,f,p,_,d,g,y,h;if(e.args.length!==2)return"/* ERROR: field access requires exactly 2 arguments */";let r=e.args[0],i=e.args[1];if(!r||!i)return"/* ERROR: invalid field access arguments */";let o=B(r,t,n),a=(l=r.$)==null?void 0:l.type,s=(u=r.$)==null?void 0:u.value;if(H(i)){let v=i.token.value,E=n;if(E.currentEvidenceParams&&H(r)){let C=`${r.token.value}.${v}`,w=E.currentEvidenceParams.get(C);if(w)return w.cParamName}if((c=e.$)!=null&&c.value&&$e(e.$.value)){let $=e.$.value;return((f=n.functions[$.funcId])==null?void 0:f.cName)||$.funcId}if(!((p=e.$)!=null&&p.value)&&(F.___dispose.includes(v)||F.___drop.includes(v)||F.___dup.includes(v))&&a){let $=null;if((ze(a)||qe(a))&&($=a.trait),$){let C=$.fields.find(w=>w.label===v&&w.assignedValue&&$e(w.assignedValue));if(C&&$e(C.assignedValue)){let w=C.assignedValue;return((_=n.functions[w.funcId])==null?void 0:_.cName)||w.funcId}else return`/* ERROR: Rc method ${v} not found in type module */`}else return`/* ERROR: No module found for Rc method ${v} */`}if(Qe(a)||At(s)){let $=(d=e.$)==null?void 0:d.value;if($){if(Ge($)){if($.variableName)return et($.variableName,(g=e.$)==null?void 0:g.env);if((E.inAsyncStateMachine||E.inEffectStateMachine)&&E.stateMachineVariables){for(let[,C]of E.stateMachineVariables)if(C.name===v&&C.kind==="outer")return`sm->__capture.${v}`}}else if(!At($))return Jn($,n,e)}return et(v,(y=e.$)==null?void 0:y.env)}if(Bi(a)&&a.fields.length===1){let $=a.fields[0];if($&&$.label===v)return o}if(qe(a)){let $=a;if(Hn($))return o;for(let w of $.variants)if(w.fields){for(let k of w.fields)if(k.label===v){let b=w.name;return`${o}.data.${b}.${ve(v)}`}}return`/* ERROR: field ${v} not found in enum ${$.typeName} */`}else if(Y(s)&&qe(s.value)){let $=s.value,C=$.variants.find(k=>k.name===v),w=(h=n.types[$.id])==null?void 0:h.cName;if(C&&!C.fields&&w){let k=Zn($,C.name,n);return`(${w}){ .tag = ${k}, .data = { } }`}}else{if(En(a)&&v==="*")return`${o}->value`;if(_t(a)){if(v==="*")return`(*${o})`;if(Rt(a.childType))return`${o}->${ve(v)}`;{let $=0,C=a;for(;_t(C);)$++,C=C.childType;if($>0&&ze(C)&&C.isReferenceSemantics&&$++,Bi(C)&&C.fields.length===1){let w=C.fields[0];if(w&&w.label===v)return $===1?`(*${o})`:`${"*".repeat($)}(${o})`}return $>0?$===1?`${o}->${ve(v)}`:`${`(${"*".repeat($-1)}${o})`}->${ve(v)}`:`${o}.${ve(v)}`}}else if(st(a)){if(v.match(/^\d+$/))return`${o}._${v}`;{let $=a.fields.findIndex(C=>C.label===v);return`${o}._${$}`}}else return ot(a)?`${o}.vtable->${ve(v)}`:rn(a)?`${o}->${ve(v)}`:`${o}.${ve(v)}`}}return"/* ERROR: field name must be an identifier */"}var ym=j(()=>{ce();Ae();ge();zt();Ua();fn()});function gm(e,t,n){var l,u,c,f,p;if(!((l=e.$)==null?void 0:l.type))return`// Error: No type information for pointer/reference expression ${L(e)}
10659
- `;let i=e.args[0];if(S(i)){let _=(u=i.func.$)==null?void 0:u.type;if(_&&at(_)){let d=i.args[0];if(d&&S(d)&&T(d,":")){let g=B(i.func,t,n),y=B(d.args[0],t,n),h=B(d.args[1],t,n),v=`Slice_${ve(q(_.childType,n))}`;return n.sliceStructTypes.has(v)||n.sliceStructTypes.set(v,{childType:q(_.childType,n)}),`(${v}){ .data = &${g}.data[${y}], .length = ${h} - ${y} }`}else if(d&&H(d)&&d.token.value===":"){let g=B(i.func,t,n),y=_,h=y.childType,v=`Slice_${ve(q(h,n))}`;return n.sliceStructTypes.has(v)||n.sliceStructTypes.set(v,{childType:q(h,n)}),wt(y.length)?`(${v}){ .data = &${g}.data[0], .length = ${y.length.value} }`:"/* Error: Cannot slice array with non-compile-time length */"}}else if(_&&(Rt(_)||_t(_)&&Rt(_.childType))){let d=Rt(_)?_:_.childType,g=i.args[0];if(g&&S(g)&&T(g,":")){let y=B(i.func,t,n),h=B(g.args[0],t,n),v=B(g.args[1],t,n),E=`Slice_${ve(q(d.childType,n))}`;return n.sliceStructTypes.has(E)||n.sliceStructTypes.set(E,{childType:q(d.childType,n)}),`(${E}){ .data = &${y}.data[${h}], .length = ${v} - ${h} }`}else if(g&&H(g)&&g.token.value===":"){let y=B(i.func,t,n),h=`Slice_${ve(q(d.childType,n))}`;return n.sliceStructTypes.has(h)||n.sliceStructTypes.set(h,{childType:q(d.childType,n)}),`(${h}){ .data = ${y}.data, .length = ${y}.length }`}}}let o=(c=i.$)==null?void 0:c.value,a=(f=i.$)==null?void 0:f.type;if(o!==void 0&&a){if(wt(o)||Lt(o)){let _=B(i,t,n);return`(&(${q(a,n)}){${_}})`}if(St(o)&&((p=i.$)!=null&&p.convertedRuntimeType))return`(&${B(i,t,n)})`}return`(&${B(i,t,n)})`}var hm=j(()=>{ce();Ae();ge();zt();fn()});function vm(e,t,n){let r=e.args[0];return r?`__yo_decr_rc(${B(r,t,n)})`:"// Error: __yo_decr_rc requires exactly 1 argument"}function Tm(e,t,n){let r=e.args[0];return r?`__yo_incr_rc(${B(r,t,n)})`:"// Error: __yo_incr_rc requires exactly 1 argument"}function Em(e,t,n){let r=e.args[0];return r?B(r,t,n):"// Error: __yo_rc_own requires exactly 1 argument"}function $m(e,t,n){var f;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_drop_array_element requires exactly 2 arguments";let o=B(r,t,n),a=B(i,t,n),s=(f=r.$)==null?void 0:f.type;if(!s||!at(s))return"// Error: __yo_drop_array_element requires an array type";let l=s.childType,u=z(l)&&l.resolvedConcreteType?l.resolvedConcreteType:l;if(at(u)){let p=u.length;if(!wt(p))return"// Error: array element has non-constant length";let _=`i_${Math.floor(Math.random()*1e6)}`,d=n.emitter;d.emitLine(`for (size_t ${_} = 0; ${_} < ${p.value}; ${_}++) {`);let g=`(${o}).data[${a}].data[${_}]`;d.emitLine(" { // drop nested array element");let y=eo(g,u.childType,n);return y&&d.emitLine(` ${y};`),d.emitLine(" }"),d.emitLine("}"),""}let c=Oi(u,n);return c?`${c}((${o}).data[${a}])`:"// No drop function for array element type"}function bm(e,t,n){var f;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_dup_array_element requires exactly 2 arguments";let o=B(r,t,n),a=B(i,t,n),s=(f=r.$)==null?void 0:f.type;if(!s||!at(s))return"// Error: __yo_dup_array_element requires an array type";let l=s.childType,u=z(l)&&l.resolvedConcreteType?l.resolvedConcreteType:l;if(at(u)){let p=u.length;if(!wt(p))return"// Error: array element has non-constant length";let _=`temp_array_${Math.floor(Math.random()*1e6)}`,d=`i_${Math.floor(Math.random()*1e6)}`,g=q(u,n),y=n.emitter;y.emitLine(`${g} ${_} = (${o}).data[${a}];`),y.emitLine(`for (size_t ${d} = 0; ${d} < ${p.value}; ${d}++) {`);let h=Pa(`${_}.data[${d}]`,u.childType,n);return y.emitLine(` ${_}.data[${d}] = ${h};`),y.emitLine("}"),_}let c=ti(u,n);return c?`${c}((${o}).data[${a}])`:"// No dup function for array element type"}function Cm(e,t,n){var p,_;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_drop_tuple_element requires exactly 2 arguments";let o=B(r,t,n);B(i,t,n);let a=(p=r.$)==null?void 0:p.type;if(!a||!st(a))return"// Error: __yo_drop_tuple_element requires a tuple type";let s=(_=i.$)==null?void 0:_.value;if(!wt(s))return"// Error: __yo_drop_tuple_element requires a constant index";let l=Number(s.value);if(l<0||l>=a.fields.length)return"// Error: __yo_drop_tuple_element index out of bounds";let u=a.fields[l].type,c=z(u)&&u.resolvedConcreteType?u.resolvedConcreteType:u;if(st(c)){let d=`(${o})._${l}`;return eo(d,c,n)}let f=Oi(c,n);return f?`${f}((${o})._${l})`:"// No drop function for tuple element type"}function km(e,t,n){var p,_;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_dup_tuple_element requires exactly 2 arguments";let o=B(r,t,n);B(i,t,n);let a=(p=r.$)==null?void 0:p.type;if(!a||!st(a))return"// Error: __yo_dup_tuple_element requires a tuple type";let s=(_=i.$)==null?void 0:_.value;if(!wt(s))return"// Error: __yo_dup_tuple_element requires a constant index";let l=Number(s.value);if(l<0||l>=a.fields.length)return"// Error: __yo_dup_tuple_element index out of bounds";let u=a.fields[l].type,c=z(u)&&u.resolvedConcreteType?u.resolvedConcreteType:u;if(st(c)){let d=`(${o})._${l}`;return Pa(d,c,n)}let f=ti(c,n);return f?`${f}((${o})._${l})`:"// No dup function for tuple element type"}function wm(e,t,n){var a,s;let r=e.args[0];if(!r)return"// Error: ___dup requires exactly 1 argument";let i=B(r,t,n),o=((a=r.$)==null?void 0:a.type)??((s=e.$)==null?void 0:s.type);return o?Pa(i,o,n):i}function Fm(e,t,n){var a,s;let r=e.args[0];if(!r)return"// Error: ___drop requires exactly 1 argument";let i=B(r,t,n),o=((a=r.$)==null?void 0:a.type)??((s=e.$)==null?void 0:s.type);return o?eo(i,o,n):""}function Lm(e,t,n){let r=e.args[0];return r?`__yo_decr_rc((void*)(${B(r,t,n)}).data)`:"// Error: __yo_dyn_drop requires exactly 1 argument"}function Am(e,t,n){let r=e.args[0];return r?`__yo_incr_rc((void*)(${B(r,t,n)}).data)`:"// Error: __yo_dyn_dup requires exactly 1 argument"}function Im(e,t,n){let r=e.args[0];return r?`__yo_incr_rc_atomic(${B(r,t,n)})`:"// Error: __yo_incr_rc_atomic requires exactly 1 argument"}function Sm(e,t,n){let r=e.args[0];return r?`__yo_decr_rc_atomic(${B(r,t,n)})`:"// Error: __yo_decr_rc_atomic requires exactly 1 argument"}function Nm(e,t,n){var o,a,s;let r=e.args[0];if(!r)return"// Error: __yo_sometype_drop requires exactly 1 argument";let i=(o=r.$)==null?void 0:o.type;if(i&&z(i)&&rt(i)){let l=B(r,t,n);return`if (${l} != NULL) { __yo_decr_rc((void*)${l}); }`}if(i&&z(i)&&i.resolvedConcreteType){let u=(a=i.resolvedConcreteType.trait)==null?void 0:a.fields.find(c=>c.label===F.___drop[0]);if(u&&u.assignedValue&&$e(u.assignedValue)){let c=(s=n.functions[u.assignedValue.funcId])==null?void 0:s.cName;if(c){let f=B(r,t,n);return`${c}(${f})`}}}return"/* __yo_sometype_drop: no-op */"}function xm(e,t,n){var o,a,s;let r=e.args[0];if(!r)return"// Error: __yo_sometype_dup requires exactly 1 argument";let i=(o=r.$)==null?void 0:o.type;if(i&&z(i)&&rt(i))return`__yo_incr_rc((void*)${B(r,t,n)})`;if(i&&z(i)&&i.resolvedConcreteType){let u=(a=i.resolvedConcreteType.trait)==null?void 0:a.fields.find(c=>c.label===F.___dup[0]);if(u&&u.assignedValue&&$e(u.assignedValue)){let c=(s=n.functions[u.assignedValue.funcId])==null?void 0:s.cName;if(c){let f=B(r,t,n);return`${c}(${f})`}}}return"/* __yo_sometype_dup: no-op */"}function Vm(e,t,n){var a;if(e.args.length!==1)return"// Error: rc requires exactly 1 argument";let r=e.args[0],i=(a=r.$)==null?void 0:a.type;if(!i)return"// Error: rc argument missing type information";let o=B(r,t,n);return pr(i)?`((yo_ref_header_t*)(${o}))->ref_count`:"1"}var Dm=j(()=>{Gt();ce();Ae();ge();zt();vr();fn()});function Mm(e,t,n){var i;let r=(i=e.$)==null?void 0:i.runtimeArgExprsInOrder;if(r){let o=n,a=r.map(s=>{var u,c;let l=B(s,t,n);if((u=s.$)!=null&&u.deferredDupExpressions&&s.$.deferredDupExpressions.length>0){jt(s,t,o);let f=s.$.deferredDupExpressions[0];if(S(f)&&((c=f.$)!=null&&c.variableName))return et(f.$.variableName,f.$.env)}return l}).join(", ");return`${n.currentFunctionName}(${a})`}else return`// Error: No arguments for recur call ${L(e)}
10660
- `}var Om=j(()=>{ce();zt();vr();fn()});function Rm(e,t,n){let r=e.args[0];return`sizeof(${B(r,t,n)})`}var Pm=j(()=>{fn()});function Um(e,t,n){var a,s,l,u,c,f,p,_,d;let r=(a=e.$)==null?void 0:a.runtimeArgExprsInOrder,i=(u=n.types[((l=(s=e.$)==null?void 0:s.type)==null?void 0:l.id)??""])==null?void 0:u.cName,o=(c=e.$)==null?void 0:c.variableName;if(r&&i){let g=n,y=r.map((h,v)=>{var C,w;let $=B(h,t,n);if((C=h.$)!=null&&C.deferredDupExpressions&&h.$.deferredDupExpressions.length>0){jt(h,t,g);let k=h.$.deferredDupExpressions[0];S(k)&&((w=k.$)!=null&&w.variableName)&&($=et(k.$.variableName,k.$.env))}return`._${v} = ${$}`}).join(", ");if(o&&((f=e.$)!=null&&f.type)){let h=`(${i}){ ${y} }`,v=Jt(e.$.type,o,n);return n.emitter.emitLine(`${t}${v} = ${h};`),o}else return`(${i}){ ${y} }`}else{if(e.args.length===0)return"";{let g=r??e.args;if(!i)return`/* Error: tuple type not found - typeId: ${((_=(p=e.$)==null?void 0:p.type)==null?void 0:_.id)??"none"} */`;let y=g.map((h,v)=>{let E=B(h,t,n);return`._${v} = ${E}`}).join(", ");if(o&&((d=e.$)!=null&&d.type)){let h=`(${i}){ ${y} }`,v=Jt(e.$.type,o,n);return n.emitter.emitLine(`${t}${v} = ${h};`),o}else return`(${i}){ ${y} }`}}}var zm=j(()=>{ce();zt();vr();fn()});function Bm(e,t,n){var u,c;let i=(u=e.args[0].$)==null?void 0:u.value;if(!i||!Y(i))throw new Error("typeid codegen: expected TypeValue argument");let o=i.value,a=o.id,s=((c=n.types[a])==null?void 0:c.cName)||q(o,n),l=`yo_typeid_${ve(s)}`;return n.typeIdStatics||(n.typeIdStatics=new Map),n.typeIdStatics.has(a)||(n.typeIdStatics.set(a,l),n.emitter.emitDeclarationLine(`static const char ${l} = 0;`)),n.cIncludes.add("<stdint.h>"),`(uintptr_t)&${l}`}var Gm=j(()=>{ge();zt()});function B$(e,t){if(S(e)&&T(e,D.begin)){let n=[];for(let r of e.args)if(S(r)&&T(r,"=",2)){let i=r.args[0],o=r.args[1],a=B(i,"",t),s=B(o,"",t);n.push(`${a} = ${s}`)}return n.join(", ")}else if(S(e)&&T(e,"=",2)){let n=e.args[0],r=e.args[1],i=B(n,"",t),o=B(r,"",t);return`${i} = ${o}`}return B(e,"",t)}function Wm(e,t,n){var r,i,o,a;if(S(e)&&T(e,D.begin)){let s=n,l=s.pendingDeferredDrops,u=((r=e.$)==null?void 0:r.deferredDropExpressions)??[],c=new Map;for(let d of u){let g=Yr(d);g&&c.set(g,d)}s.pendingDeferredDrops=[...l??[]];let f=s.consumedVarPendingDrops,p=((i=e.$)==null?void 0:i.consumedVariableDropExpressions)??[];s.consumedVarPendingDrops=[...p,...f??[]];let _=new Set;for(let d of e.args){let g=B(d,t,n);if(g&&n.emitter.emitLine(`${t}${g};`),(o=d.$)!=null&&o.env&&c.size>_.size)for(let y of d.$.env.frames)for(let h of y.variables)c.has(h.name)&&!_.has(h.name)&&(_.add(h.name),s.pendingDeferredDrops.unshift(c.get(h.name)))}if((a=e.$)!=null&&a.deferredDropExpressions)for(let d of e.$.deferredDropExpressions){let g=B(d,t,n);g&&n.emitter.emitLine(`${t}${g};`)}s.pendingDeferredDrops=l,s.consumedVarPendingDrops=f}else{let s=B(e,t,n);s&&n.emitter.emitLine(`${t}${s};`)}}function Ym(e,t,n){var i,o;let r=e.args;if(r.length===2){let a=r[0],s=r[1],l=n.currentLoopLabel,u=`loop_${Math.random().toString(36).substr(2,9)}`;n.currentLoopLabel=u;let c=n,f=c.loopBodyDropsBaselineCount;c.loopBodyDropsBaselineCount=((i=c.pendingDeferredDrops)==null?void 0:i.length)??0,n.emitter.emitLine(`${t}while (true) {`);let p=B(a,t+" ",n);return n.emitter.emitLine(`${t} if (!(${p})) {`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t} }`),Wm(s,t+" ",n),n.emitter.emitLine(`${t}}`),n.emitter.emitLine(`${t}${u}:;`),c.loopBodyDropsBaselineCount=f,n.currentLoopLabel=l,""}else if(r.length===3){let a=r[0],s=r[1],l=r[2],u=n.currentLoopLabel,c=n.currentContinueLabel,f=`loop_${Math.random().toString(36).substr(2,9)}`,p=`continue_${Math.random().toString(36).substr(2,9)}`;n.currentLoopLabel=f,n.currentContinueLabel=p;let _=n,d=_.loopBodyDropsBaselineCount;_.loopBodyDropsBaselineCount=((o=_.pendingDeferredDrops)==null?void 0:o.length)??0,n.emitter.emitLine(`${t}while (true) {`);let g=B(a,t+" ",n);n.emitter.emitLine(`${t} if (!(${g})) {`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t} }`),Wm(l,t+" ",n),n.emitter.emitLine(`${t}${p}:;`);let y=B$(s,n);return n.emitter.emitLine(`${t} ${y};`),n.emitter.emitLine(`${t}}`),n.emitter.emitLine(`${t}${f}:;`),_.loopBodyDropsBaselineCount=d,n.currentLoopLabel=u,n.currentContinueLabel=c,""}else return n.emitter.emitLine(`${t}/* Error: while loop expects 2 or 3 arguments, got ${r.length} */`),""}var qm=j(()=>{ce();zt();fn()});function G$(e){let t=[];for(let n of e)if(n.isEffectRowSpread){let r=n.type;z(r)&&r.resolvedConcreteType&&(r=r.resolvedConcreteType),Xt(r)&&t.push(...r.implicitParameters)}else t.push(n);return t}function W$(e,t,n,r){var f,p,_,d;let i=e.args[0];if(!((f=i==null?void 0:i.$)!=null&&f.type))return;let o=e.args.find(g=>S(g)&&T(g,D.using));if(!o)return;let a=Un(i.$.type);if(!((p=a==null?void 0:a.isFuture.effects)!=null&&p.length))return;let s=G$(a.isFuture.effects),l=o.args,u=r,c=u.emitter;for(let g=0;g<s.length&&g<l.length;g++){let y=s[g],h=l[g];if(te(y.type)){let v=y.label,E;if(u.currentEvidenceParams){for(let $ of u.currentEvidenceParams.values())if($.fieldLabel===v){E=$.cParamName;break}}if(!E&&u.stateMachineVariables){for(let[,$]of u.stateMachineVariables)if($.name===v&&$.kind==="outer"){E=`sm->__capture.${v}`;break}}if(!E){let $=(_=h.$)==null?void 0:_.value;if($&&$e($)){let C=r.functions[$.funcId];C&&(E=C.cName)}}E||(E=B(h,n,r)),E&&c.emitLine(`${n} ${t}->__capture.${v} = (void*)${E};`)}else if(Qe(y.type)){let v=y.type;for(let E of v.fields){if(!te(E.type))continue;let $;if(u.stateMachineVariables){for(let[,C]of u.stateMachineVariables)if(C.name===E.label&&C.kind==="outer"){$=`sm->__capture.${E.label}`;break}}if(!$){let C=(d=h.$)==null?void 0:d.value;if(C&&At(C)){let w=v.fields.indexOf(E),k=C.fields[w];if(k&&$e(k)){let b=r.functions[k.funcId];b&&($=b.cName)}}}if(!$&&u.currentEvidenceParams){for(let C of u.currentEvidenceParams.values())if(C.fieldLabel===E.label){$=C.cParamName;break}}$||($=Y$(E.label,v,u,e)),$&&c.emitLine(`${n} ${t}->__capture.${E.label} = (void*)${$};`)}}}}function Y$(e,t,n,r){var a,s,l,u;let i=((a=r.$)==null?void 0:a.env)??((s=r.func.$)==null?void 0:s.env);if(!i)return;let o=hr(i,c=>c.isImplicit===!0);for(let c=o.length-1;c>=0;c--){let f=o[c],p=(l=f.value)==null?void 0:l[f.value.length-1];if(p&&At(p)){let _=p.type.fields.findIndex(d=>d.label===e);if(_>=0){let d=p.fields[_];if(d&&$e(d)){let g=(u=n.functions[d.funcId])==null?void 0:u.cName;if(g)return g}}}}}function q$(e,t,n){var l,u;let r=n,i=e.args[0],o=(l=r.continuationVariables)==null?void 0:l.get("resume");if(o&&"directReturnVar"in o&&o.directExitLabel){if(i){let c=B(i,t,n);if(r.effectHandlerParamDrops)for(let f of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${f};`);r.emitter.emitLine(`${t}${o.directReturnVar} = ${c};`),r.emitter.emitLine(`${t}goto ${o.directExitLabel};`)}else{if(r.effectHandlerParamDrops)for(let c of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${c};`);r.emitter.emitLine(`${t}goto ${o.directExitLabel};`)}return""}if(r.inAsyncStateMachine){let c=r.emitter;if(i){let f=B(i,t,n);f&&f!=="(void)0"&&c.emitLine(`${t}(void)${f};`)}if(r.effectHandlerParamDrops)for(let f of r.effectHandlerParamDrops)c.emitLine(`${t}${f};`);return Tr(t,r,e,!1,!0,!0),Ei(t,r,e,!0),ei({emitter:c,indent:t,debugLabel:r.currentFunctionName}),""}if((r.isModuleEffectMemberFunction||r.currentEvidenceParams&&r.currentEvidenceParams.size>0)&&r.emitter.emitLine(`${t}__yo_effect_escaped = 1;`),!i){if(r.effectHandlerParamDrops)for(let c of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${c};`);if(Tr(t,r,e,!1,!0,!0),Ei(t,r,e,!0),r.currentFunctionType){let c=r.currentFunctionType.return.type;if(!Pe(c)){let f=r.overrideReturnTypeStr??q(c,n);if(f!=="void")return`return (${f}){0}`}}return"return"}let s=B(i,t,n);if(r.effectHandlerParamDrops)for(let c of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${c};`);if(Tr(t,r,e,!1,!0,!0),Ei(t,r,e,!0),(r.isModuleEffectMemberFunction||r.currentEvidenceParams&&r.currentEvidenceParams.size>0)&&r.currentFunctionType){let c=(u=i.$)==null?void 0:u.type;if(c&&!Pe(c)){let p=q(c,n);r.emitter.emitLine(`${t}{ ${p} _esc_val = ${s}; memcpy(__yo_effect_escape_value, &_esc_val, sizeof(${p})); }`)}let f=r.currentFunctionType.return.type;if(!Pe(f)){let p=r.overrideReturnTypeStr??q(f,n);if(p!=="void")return`return (${p}){0}`}return"return"}return`return ${s}`}function Hm(e,t,n){let r;switch(e.tag){case"FnCall":r=H$(e,t,n);break;case"Atom":r=Ha(e,n,t);break}return r}function H$(e,t,n){var r,i,o,a,s,l,u,c,f,p,_,d,g;if((r=e.$)!=null&&r.macroExpansion)return B(e.$.macroExpansion,t,n);if(S(e.func)&&T(e.func,".",2)&&e.func.args[1]&&H(e.func.args[1])){let y=e.func.args[1].token.value,h=e.func.args[0],v=(i=h==null?void 0:h.$)==null?void 0:i.type;if(v&&z(v)&&rt(v)){if(y===F.___drop[0]){let E=B(h,t,n);return`if (${E} != NULL) { __yo_decr_rc((void*)${E}); }`}if(y===F.___dup[0])return`__yo_incr_rc((void*)${B(h,t,n)})`}}if(k_(e))return w_(e,t,n);if(T(e,F.__yo_decr_rc))return vm(e,t,n);if(T(e,F.__yo_incr_rc))return Tm(e,t,n);if(T(e,F.__yo_rc_own))return Em(e,t,n);if(T(e,F.__yo_drop_array_element))return $m(e,t,n);if(T(e,F.__yo_dup_array_element))return bm(e,t,n);if(T(e,F.__yo_drop_tuple_element))return Cm(e,t,n);if(T(e,F.__yo_dup_tuple_element))return km(e,t,n);if(T(e,F.___dup))return wm(e,t,n);if(T(e,F.___drop))return Fm(e,t,n);if(T(e,F.__yo_dyn_drop))return Lm(e,t,n);if(T(e,F.__yo_dyn_dup))return Am(e,t,n);if(T(e,F.__yo_incr_rc_atomic))return Im(e,t,n);if(T(e,F.__yo_decr_rc_atomic))return Sm(e,t,n);if(T(e,F.__yo_iso_extract))return Xd(e,t,n);if(T(e,F.__yo_iso_dispose))return Qd(e,t,n);if(T(e,F.__yo_arc_dispose))return Td(e,t,n);if(lf(e))return Zd(e,t,n);if(af(e))return Ed(e,t,n);if(T(e,F.__yo_sometype_drop))return Nm(e,t,n);if(T(e,F.__yo_sometype_dup))return xm(e,t,n);if(T(e,F.__yo_gc_collect))return qd(e,t,n);if(T(e,F.rc))return Vm(e,t,n);if(T(e,F.panic))return _m(e,t,n);if(T(e,D.test))return"/* test declaration skipped */";if(T(e,F.__yo_thread_set_maximum_threads))return sm(e,t,n);if(T(e,D.op_and))return gd(e,t,n);if(T(e,D.op_or))return hd(e,t,n);if(qn(e))return(o=e.$)!=null&&o.awaitAnalysis?F_(e,t,n):N_(e,t,n);if(T(e,D.dyn))return Wd(e,t,n);if(Nr(e))return Ad(e,t,n);if(l_(e))return Id(e,t,n);if(u_(e)){let y=e.args[0];if(!y)return"// Error: spawn requires a Future argument";let v=n.emitter,E=B(y,t,n),$=(a=y.$)==null?void 0:a.type,C=$?q($,n):"void*",w=(s=e.$)==null?void 0:s.type,k=w?q(w,n):null,b=(l=e.$)!=null&&l.variableName?`__spawn_future_${e.$.variableName}`:"__spawn_future",A=(u=e.$)!=null&&u.variableName?`__spawn_state_${e.$.variableName}`:"__spawn_state";return v.emitLine(`${t}// io.spawn \u2014 start cold Future, return JoinHandle`),v.emitLine(`${t}${C} ${b} = ${E};`),v.emitLine(`${t}int ${A} = ${b}->state;`),v.emitLine(`${t}if (${A} == -2) {`),v.emitLine(`${t} fprintf(stderr, "panic: attempted to spawn an aborted Future\\n");`),v.emitLine(`${t} abort();`),v.emitLine(`${t}}`),qs((c=y.$)==null?void 0:c.type)||(v.emitLine(`${t}if (${A} == 0 && ${b}->__yo_resume_fn) {`),W$(e,b,t,n),v.emitLine(`${t} __yo_incr_rc((void*)${b});`),v.emitLine(`${t} ${b}->__yo_resume_fn((void*)${b});`),v.emitLine(`${t}}`)),k?`(${k}){ .__future = (void*)${b} }`:`(void*)${b}`}if(c_(e))return Sd(e,t,n);if(T(e,D.return))return J_(e,t,n);if(T(e,D.escape))return q$(e,t,n);if(T(e,F.__yo_array_fill,2))return Cd(e,t,n);if(T(e,"::",2))return"";if(T(e,":",2))return Md(e,t,n);if(T(e,":=",2)){let y=jd(e,t,n);if(y!==void 0)return y}else{if(T(e,"=",2))return wd(e,t,n);if((f=e.$)!=null&&f.value&&!Ge((p=e.$)==null?void 0:p.value)&&!Pe(e.$.type)&&!cn((_=e.$)==null?void 0:_.controlFlow)){let y=e.$.value;return Jn(y,n,e)}else{if(T(e,".",2))return mm(e,t,n);if(T(e,D.begin))return Vd(e,t,n);if(T(e,D.cond))return Rd(e,t,n);if(T(e,D.match))return tm(e,t,n);if(T(e,F.__yo_address_of,1))return gm(e,t,n);if(T(e,D.tuple))return Um(e,t,n);if(T(e,D.array)){let y=bd(e,t,n);if(y!==void 0)return y}else{if(T(e,D.recur))return Mm(e,t,n);if(T(e,D.runtime,1))return B(e.args[0],t,n);if(T(e,F.sizeof,1))return Rm(e,t,n);if(T(e,F.typeid,1))return Bm(e,t,n);if(T(e,F.downcast,2))return Bd(e,t,n);if(T(e,ta)){let y=((d=e.$)==null?void 0:d.runtimeArgExprsInOrder)||e.args;if(y){let h=n,v=y.map(E=>{var C,w;let $=B(E,t,n);if((C=E.$)!=null&&C.deferredDupExpressions&&E.$.deferredDupExpressions.length>0){jt(E,t,h);let k=E.$.deferredDupExpressions[0];if(S(k)&&((w=k.$)!=null&&w.variableName))return et(k.$.variableName,k.$.env)}return $});return Xs(e.func.token.value,v,e,n,t)}}else{if(T(e,D.while))return Ym(e,t,n);if(T(e,"->",2)&&S(e.args[0])&&T(e.args[0],D.fn)){let y=(g=e.$)==null?void 0:g.value;return $e(y)?Jn(y,n):"// Error: Anonymous function missing function value"}else{if(T(e,F.consume))return Ud(e,t,n);if(T(e,F.comptime_expect_error)||T(e,F.comptime_assert)||T(e,F.__yo_var_print_info)||T(e,F.__yo_var_is_owning_the_rc_value)||T(e,F.__yo_var_has_other_aliases))return"";if(T(e,D.open))return rm(e,t,n);{let y=fm(e,t,n);if(y!==void 0)return y}}}}}}if(S(e))throw new Error(`Unhandled function call: ${L(e)}`);return`// Failed to transpile ${L(e)}`}var jm=j(()=>{Jr();Gt();ce();Ae();ge();ft();Cu();zs();zt();vd();$d();kd();Fd();Kc();ea();ku();xd();Dd();Od();Hs();Ua();Pd();zd();Gd();vr();Yd();fn();Hd();Kd();sf();Jd();nm();im();pm();dm();cf();ym();hm();Dm();Om();Ks();Pm();zm();Gm();qm()});function Km({expr:e,env:t,context:n}){He(e,F.alignof,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:"Failed to evaluate expression."});t=i.$.env;let o;i.$.value&&Y(i.$.value)?o=i.$.value.value:o=i.$.type;let a=Yi(o),s;return a===null?s=oe(_n(),{env:t,context:n}):s=Xn("Usize",a),e.$={env:t,type:_n(),value:s,pathCollection:[]},e}var Xm=j(()=>{xe();ce();dt();Je();ge();_r();Ke()});function Qm({expr:e,env:t,context:n}){let r=T(e,D.op_and)?"and":"or",i=e.args;if(i.length===0){let u=on(r==="and");return e.$={env:t,type:Bt(),value:u,pathCollection:[],isAccessingProperty:!1},e}let o=t,a,s=!1,l=!1;for(let u=0;u<i.length;u++){let c=i[u],f=R({expr:c,env:o,context:{...n}});if(!f.$||!Lr(f.$.type))throw m({token:c.token,errorMessage:`Expected bool type for "${r}" argument, got:
10658
+ )`;if(F.__yo_decr_rc.includes(e))return`__yo_decr_rc((void*)(${t[0]}))`;if(F.__yo_as.includes(e)&&((o=n.$)!=null&&o.type)){let f=q(n.$.type,r),p=(s=(a=n.args[0])==null?void 0:a.$)==null?void 0:s.type;return p&&qe(p)&&!Ur(p)?`((${f})((${t[0]}).tag))`:`((${f})(${t[0]}))`}else{if(F.__yo_ptr_add.includes(e))return`(${t[0]} + ${t[1]})`;if(F.__yo_ptr_sub.includes(e))return`(${t[0]} - ${t[1]})`;if(F.__yo_ptr_diff.includes(e))return`(${t[0]} - ${t[1]})`;if(F.__yo_ptr_eq.includes(e))return`(${t[0]} == ${t[1]})`;if(F.__yo_ptr_neq.includes(e))return`(${t[0]} != ${t[1]})`;if(F.__yo_ptr_lt.includes(e))return`(${t[0]} < ${t[1]})`;if(F.__yo_ptr_lte.includes(e))return`(${t[0]} <= ${t[1]})`;if(F.__yo_ptr_gt.includes(e))return`(${t[0]} > ${t[1]})`;if(F.__yo_ptr_gte.includes(e))return`(${t[0]} >= ${t[1]})`;if(F.__yo_slice_len.includes(e))return`(${t[0]}.length)`;if(F.__yo_slice_new.includes(e)&&((l=n.$)!=null&&l.type))return`(${q(n.$.type,r)}){ .data = ${t[0]}, .length = ${t[1]} }`;if(F.__yo_getrandom.includes(e))return`getrandom(${t[0]}, ${t[1]}, ${t[2]})`;if(F.__yo_arc4random_buf.includes(e))return`(arc4random_buf(${t[0]}, ${t[1]}), (void)0)`;if(F.__yo_bcrypt_gen_random.includes(e))return`(int32_t)BCryptGenRandom(NULL, ${t[0]}, ${t[1]}, BCRYPT_USE_SYSTEM_PREFERRED_RNG)`;if(F.__yo_maybe_uninit_new.includes(e)&&((u=n.$)!=null&&u.type)){let f=q(n.$.type,r),p=`__yo_uninit_${P$++}`;return r.emitter.emitLine(`${i}${f} ${p};`),p}else return F.__yo_maybe_uninit_as_ptr.includes(e)&&((c=n.$)!=null&&c.type)?`((${q(n.$.type,r)})(${t[0]}))`:F.__yo_maybe_uninit_assume_init.includes(e)?`(${t[0]})`:`/* Unhandled operator ${e} */`}}var P$,sf=j(()=>{ce();Ae();zt();P$=0});function Xd(e,t,n){var c,f,p,_;let r=e.args[0];if(!r)return"// Error: __yo_iso_extract requires exactly 1 argument";let i=B(r,t,n),o=(c=r.$)==null?void 0:c.type;if(!o||!Fn(o))return"// Error: __yo_iso_extract requires an Iso type";let a=q(o,n),s=(f=e.$)==null?void 0:f.type;if(s&&((p=n.isoTypes)!=null&&p.has(a))){let d=n.isoTypes.get(a);d.optionTypeCName||(d.optionTypeCName=q(s,n))}let l=`__yo_iso_extract_${a}(${i})`,u=(_=e.$)==null?void 0:_.variableName;return u&&s?(n.emitter.emitLine(`${t}${q(s,n)} ${u} = ${l};`),u):l}function Qd(e,t,n){var s;let r=e.args[0];if(!r)return"// Error: __yo_iso_dispose requires exactly 1 argument";let i=B(r,t,n),o=(s=r.$)==null?void 0:s.type;return!o||!Fn(o)?"// Error: __yo_iso_dispose requires an Iso type":`__yo_iso_dispose_${q(o,n)}(${i})`}function lf(e){var n;let t=(n=e.func.$)==null?void 0:n.value;return Y(t)&&Fn(t.value)&&e.args.length===1}function Zd(e,t,n){var c;if(!lf(e))return"/* Error: generateIsoTypeCall called on non-Iso type call */";let i=((c=e.func.$)==null?void 0:c.value).value,o=i.childType,a=e.args[0],s=B(a,t,n),l=q(i,n),u=q(o,n);return n.isoTypes||(n.isoTypes=new Map),n.isoTypes.has(l)||n.isoTypes.set(l,{childTypeCName:u,isoType:i}),`__yo_create_iso_${l}(${s})`}var Jd=j(()=>{Ae();ge();zt();fn()});function no(e){return e===""||e==="break"||e==="continue"||e.startsWith("goto")||e.includes("return")}function ro(e,t,n){var r,i,o,a,s,l,u;if(S(e)&&T(e,D.begin)){let c=e.args,f=n,p=f.pendingDeferredDrops,_=((r=e.$)==null?void 0:r.deferredDropExpressions)??[];f.pendingDeferredDrops=[..._,...p??[]];let d=f.consumedVarPendingDrops,g=((i=e.$)==null?void 0:i.consumedVariableDropExpressions)??[];f.consumedVarPendingDrops=[...g,...d??[]];for(let h=0;h<c.length-1;h++){let v=c[h],E=B(v,t,n);E&&n.emitter.emitLine(`${t}${E};`)}let y="";if(c.length>0){let h=c[c.length-1];if((o=h.$)!=null&&o.deferredDupExpressions&&h.$.deferredDupExpressions.length>0){if((a=h.$)!=null&&a.variableName){let E=h.$.variableName;h.$.variableName=void 0;let $=B(h,t,n);h.$.variableName=E;let C=q(h.$.type,n),w=et(E,h.$.env);w!==$&&n.emitter.emitLine(`${t}${C} ${w} = ${$};`)}jt(h,t,n);let v=h.$.deferredDupExpressions[0];S(v)&&((s=v.$)!=null&&s.variableName)?y=et(v.$.variableName,v.$.env):y=B(h,t,n)}else y=B(h,t,n)}return(l=e.$)!=null&&l.deferredDropExpressions&&bn(e,t,n),f.pendingDeferredDrops=p,f.consumedVarPendingDrops=d,y}else return(u=e.$)!=null&&u.deferredDupExpressions&&jt(e,t,n),B(e,t,n)}function tm(e,t,n){var g,y,h,v,E,$,C;if(!e.$)return'/* "match" expression is not evaluated */';let r=e.$.variableName,i=e.$.type,o=i&&Pe(i);if(!o&&r){let w=q(i,n);n.emitter.emitLine(`${t}${w} ${r};`)}let a=B(e.args[0],t,n),s=(g=e.args[0].$)==null?void 0:g.type;if(!s)return'// Error: "match" expression requires a valid type';if(e.$.isPrimitiveMatch)return z$(e,t,n,a,s,r,o);let l,u;if(_t(s)?(u=s.childType,l=s.tag):rn(s)?(u=s,l="ref_semantics"):u=s,!qe(u))return'// Error: "match" expression requires an enum type';if(!((y=n.types[u.id])==null?void 0:y.cName))return`// Error: "match" expression enum type ${u.typeName} has no C name`;let f=Hn(u);if(f){let w=e.args.slice(1),k=null,b=null;for(let A of w)if(S(A)&&T(A,"=>",2)){let I=A.args[0],N=A.args[1];if(I&&N&&S(I)&&T(I,"."))k={caseBody:N};else{let M=I.func;if(M&&S(M)&&T(M,".")){let V=M.args[0];if(V&&H(V)){let O=V.token.value;b={caseBody:N,variantName:O,casePattern:I}}}}}if(n.emitter.emitLine(`${t}if (${l&&l!=="ref_semantics"?"*":""}${a} != NULL) {`),b){let A;if(S(b.casePattern)&&b.casePattern.args.length>0){let V=b.casePattern.args[0];if(V&&H(V)){A=ve(V.token.value);let O=f;n.emitter.emitLine(`${t} ${q(O,n)} ${A} = ${a};`)}}let I=n;A&&(I.inAsyncStateMachine||I.inEffectStateMachine)&&(I.localShadowedVariables||(I.localShadowedVariables=new Set),I.localShadowedVariables.add(A));let N=ro(b.caseBody,t+" ",n);A&&I.localShadowedVariables&&I.localShadowedVariables.delete(A);let M=no(N);if(!o&&r&&!M){let V=N||a;n.emitter.emitLine(`${t} ${r} = ${V};`)}else N&&N!==""&&n.emitter.emitLine(`${t} ${N};`)}if(n.emitter.emitLine(`${t}} else {`),k){let A=ro(k.caseBody,t+" ",n),I=no(A);!o&&r&&!I?n.emitter.emitLine(`${t} ${r} = ${A};`):A&&A!==""&&n.emitter.emitLine(`${t} ${A};`)}return n.emitter.emitLine(`${t}}`),o?"":r??""}if(Ur(u)){n.emitter.emitLine(`${t}switch (${l&&l!=="ref_semantics"?"*":""}${a}) {`);let w=n.insideMatch;n.insideMatch=!0;let k=e.args.slice(1);for(let b=0;b<k.length;b++){let A=k[b];if(S(A)&&T(A,"=>",2)){let I=A.args[0],N=A.args[1];if(I&&N&&H(I)&&I.token.value==="_"){n.emitter.emitLine(`${t}default: {`);let M=ro(N,t+" ",n);!o&&r&&M&&!no(M)?n.emitter.emitLine(`${t} ${r} = ${M};`):M&&n.emitter.emitLine(`${t} ${M};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}else if(I&&N&&S(I)&&T(I,".",1)){let M=I.args[0].token.value,V=Zn(u,M,n);n.emitter.emitLine(`${t}case ${V}: {`);let O=ro(N,t+" ",n);!o&&r&&O&&!no(O)?n.emitter.emitLine(`${t} ${r} = ${O};`):O&&n.emitter.emitLine(`${t} ${O};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}}}return n.insideMatch=w,n.emitter.emitLine(`${t}}`),o?"":r??""}n.emitter.emitLine(`${t}switch (${l==="ref_semantics"||l?a+"->tag":"("+a+").tag"}) {`);let _=n.insideMatch;n.insideMatch=!0;let d=e.args.slice(1);for(let w=0;w<d.length;w++){let k=d[w];if(S(k)&&T(k,"=>",2)){let b=k.args[0],A=k.args[1];if(b&&A&&H(b)&&b.token.value==="_"){n.emitter.emitLine(`${t}default: {`);let I=ro(A,t+" ",n);!o&&r&&I&&!no(I)?n.emitter.emitLine(`${t} ${r} = ${I};`):I&&n.emitter.emitLine(`${t} ${I};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}else if(b&&A&&S(b)&&b.func.tag==="Atom"&&b.func.token.value==="."&&b.args.length>=1){let I=b.args[0].token.value,N=Zn(u,I,n);if(n.emitter.emitLine(`${t}case ${N}: {`),b.args.length>1){let V=u.variants.find(O=>O.name===I);if(V&&V.fields){let O=b.args.slice(1);if(O.some(P=>S(P)&&T(P,":",2))){for(let P of O)if(S(P)&&T(P,":",2)){let G=P.args[0],U=P.args[1];if(!H(G))continue;let X=G.token.value,re=V.fields.find(ee=>ee.label===X);if(!re||Pe(re.type))continue;if(H(U)){let ee=U.token.value;if(ee!=="_"){let fe=ve(ee),de=ve(X),Q=q(re.type,n),pe=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${Q} ${fe} = ${a}${pe}data.${I}.${de};`);let Z=n;if((Z!=null&&Z.inAsyncStateMachine||Z!=null&&Z.inEffectStateMachine)&&Z.stateMachineVariables){let me;if((h=U.$)!=null&&h.env){let ke=ue(U.$.env,ee);ke.length>0&&(me=ke[ke.length-1].id)}me&&Z.stateMachineVariables.has(me)&&n.emitter.emitLine(`${t} sm->var_${me} = ${fe};`)}}}}}else for(let P=0;P<O.length&&P<V.fields.length;P++){let G=O[P],U=V.fields[P];if(H(G)&&U){if(Pe(U.type))continue;let X=G.token.value;if(X!=="_"){let re=ve(X),ee=ve(U.label),fe=q(U.type,n),de=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${fe} ${re} = ${a}${de}data.${I}.${ee};`);let Q=n;if((Q!=null&&Q.inAsyncStateMachine||Q!=null&&Q.inEffectStateMachine)&&Q.stateMachineVariables){let pe;if((v=G.$)!=null&&v.env){let Z=ue(G.$.env,X);Z.length>0&&(pe=Z[Z.length-1].id)}pe&&Q.stateMachineVariables.has(pe)&&n.emitter.emitLine(`${t} sm->var_${pe} = ${re};`)}}}}}}if(S(A)&&T(A,"=>",2)){let V=A.args[0];n.emitter.emitLine(`${t} ${q(s,n)} ${ve(V.token.value)} = ${a};`),A=A.args[1]}let M=ro(A,t+" ",n);!o&&r&&M&&!no(M)?n.emitter.emitLine(`${t} ${r} = ${M};`):M&&n.emitter.emitLine(`${t} ${M};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}else if(b&&A&&S(b)&&S(b.func)&&b.func.func.tag==="Atom"&&b.func.func.token.value==="."&&b.func.args.length===1){let I=b.func.args[0].token.value,N=Zn(u,I,n),M=b.args;n.emitter.emitLine(`${t}case ${N}: {`);let V=u.variants.find(W=>W.name===I);if(V&&V.fields&&M.length>0)if(M.some(P=>S(P)&&T(P,":",2))){for(let P of M)if(S(P)&&T(P,":",2)){let G=P.args[0],U=P.args[1];if(!H(G))continue;let X=G.token.value,re=V.fields.find(ee=>ee.label===X);if(!re)continue;if(H(U)){let ee=U.token.value;if(ee!=="_"){let fe=ve(ee);if(Pe(re.type))n.emitter.emitLine(`${t} // ${fe} is unit type (no value)`);else{let de=ve(X),Q=q(re.type,n),pe=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${Q} ${fe} = ${a}${pe}data.${I}.${de};`);let Z=n;if((Z!=null&&Z.inAsyncStateMachine||Z!=null&&Z.inEffectStateMachine)&&Z.stateMachineVariables){let me;if((E=U.$)!=null&&E.env){let ke=ue(U.$.env,fe);ke.length>0&&(me=ke[ke.length-1].id)}me&&Z.stateMachineVariables.has(me)&&n.emitter.emitLine(`${t} sm->var_${me} = ${fe};`)}}}}}}else for(let P=0;P<Math.min(M.length,V.fields.length);P++){let G=M[P],U=V.fields[P];if(G.tag==="Atom"&&U){let X=G.token.value;if(X!=="_"){let re=ve(X);if(Pe(U.type))n.emitter.emitLine(`${t} // ${re} is unit type (no value)`);else{let ee=ve(U.label),fe=q(U.type,n),de=l==="ref_semantics"||l?"->":".";n.emitter.emitLine(`${t} ${fe} ${re} = ${a}${de}data.${I}.${ee};`);let Q=n;if((Q!=null&&Q.inAsyncStateMachine||Q!=null&&Q.inEffectStateMachine)&&Q.stateMachineVariables){let pe;if(($=G.$)!=null&&$.env){let Z=ue(G.$.env,X);Z.length>0&&(pe=Z[Z.length-1].id)}pe&&Q.stateMachineVariables.has(pe)&&n.emitter.emitLine(`${t} sm->var_${pe} = ${re};`)}}}}}if(S(A)&&T(A,"=>",2)){let W=A.args[0];n.emitter.emitLine(`${t} ${q(s,n)} ${ve(W.token.value)} = ${a};`),A=A.args[1]}let O=ro(A,t+" ",n);!o&&r&&O&&!no(O)?n.emitter.emitLine(`${t} ${r} = ${O};`):O&&n.emitter.emitLine(`${t} ${O};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}}}return n.insideMatch=_,n.emitter.emitLine(`${t}}`),(C=e.$)!=null&&C.deferredDropExpressions&&bn(e,t,n),o?"":r??""}function U$(e){return S(e)?T(e,"|",2):!1}function uf(e){if(!U$(e))return[e];let t=e,n=t.args[0],r=t.args[1];return[...uf(n),...uf(r)]}function em(e){if(e!==void 0){if(wt(e))return String(e.value);if(Lt(e))return e.value?"true":"false"}}function z$(e,t,n,r,i,o,a){var u,c,f;let s=n.insideMatch;n.insideMatch=!0,n.emitter.emitLine(`${t}switch (${r}) {`);let l=e.args.slice(1);for(let p=0;p<l.length;p++){let _=l[p];if(S(_)&&T(_,"=>",2)){let d=_.args[0],g=_.args[1];if(!d||!g)continue;if(H(d)&&d.token.value==="_"){n.emitter.emitLine(`${t}default: {`);let E=ro(g,t+" ",n);!a&&o&&E&&!no(E)?n.emitter.emitLine(`${t} ${o} = ${E};`):E&&n.emitter.emitLine(`${t} ${E};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`);continue}let y=uf(d),h=(u=d.$)==null?void 0:u.primitivePatternValues;if(h&&h.length>0)for(let E of h){let $=em(E);$!==void 0&&n.emitter.emitLine(`${t}case ${$}:`)}else for(let E of y){let $=(c=E.$)==null?void 0:c.value,C=em($);C!==void 0&&n.emitter.emitLine(`${t}case ${C}:`)}n.emitter.emitLine(`${t}{`);let v=ro(g,t+" ",n);!a&&o&&v&&!no(v)?n.emitter.emitLine(`${t} ${o} = ${v};`):v&&n.emitter.emitLine(`${t} ${v};`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t}}`)}}return n.insideMatch=s,n.emitter.emitLine(`${t}}`),(f=e.$)!=null&&f.deferredDropExpressions&&bn(e,t,n),a?"":o??""}var nm=j(()=>{ft();ce();Ae();ge();zt();vr();fn()});function rm(e,t,n){var r,i;if((r=e.$)!=null&&r.runtimeDestructurings&&e.$.runtimeDestructurings.length>0){let o=e.args[0];if(!o||!((i=o.$)!=null&&i.type))return"// Error: open expression has no argument or type";let a=o.$.type,s=o.$.value;if(ze(a)&&s===void 0){let l=B(o,t,n),u=e.$.runtimeDestructurings;for(let c of u){let f=q(c.type,n),p=ve(c.variableName),_=ve(c.label);n.emitter.emitLine(`${t}${f} ${p} = ${l}.${_};`)}}}return""}var im=j(()=>{Ae();zt();fn()});function om(e,t,n){var g,y,h,v,E;let r=(g=e.$)==null?void 0:g.runtimeArgExprsInOrder;if(!r||r.length!==1)return"/* Error: __yo_thread_spawn requires exactly 1 argument */";let i=r[0],o=(y=i.$)==null?void 0:y.type;if(!o)return"/* Error: __yo_thread_spawn argument has no type */";let a,s;if(z(o)){let $=o;$.resolvedConcreteType&&(a=$.resolvedConcreteType.id,s=$.resolvedConcreteType)}else ze(o)&&(a=o.id,s=o);if(!a||!s)return"/* Error: __yo_thread_spawn could not determine concrete closure type */";let l=n.implClosureCallMap.get(a);if(!l)return`/* Error: __yo_thread_spawn could not find closure function for type ${a} */`;let u=l.functionCName,c=q(s,n),f=B(i,t,n),p=(h=i.$)!=null&&h.variableName?et(i.$.variableName,i.$.env):f,_=`_thread_closure_data_${Nt(((v=e.$)==null?void 0:v.env.modulePath)??"")}`;n.emitter.emitLine(`${t}${c}* ${_} = (${c}*)__yo_malloc(sizeof(${c}));`),n.emitter.emitLine(`${t}*${_} = ${p};`);let d=(E=e.$)==null?void 0:E.variableName;return d?(n.emitter.emitLine(`${t}__yo_thread_t ${d} = __yo_thread_spawn(${u}, ${_});`),d):`__yo_thread_spawn(${u}, ${_})`}function am(e,t,n){var d,g,y,h;let r=(d=e.$)==null?void 0:d.runtimeArgExprsInOrder;if(!r||r.length!==1)return"/* Error: __yo_worker_spawn requires exactly 1 argument */";let i=r[0],o=(g=i.$)==null?void 0:g.type;if(!o)return"/* Error: __yo_worker_spawn argument has no type */";let a,s;if(z(o)){let v=o;v.resolvedConcreteType&&(a=v.resolvedConcreteType.id,s=v.resolvedConcreteType)}else ze(o)&&(a=o.id,s=o);if(!a||!s)return"/* Error: __yo_worker_spawn could not determine concrete closure type */";let l=n.implClosureCallMap.get(a);if(!l)return`/* Error: __yo_worker_spawn could not find closure function for type ${a} */`;let u=l.functionCName,c=q(s,n),f=B(i,t,n),p=(y=i.$)!=null&&y.variableName?et(i.$.variableName,i.$.env):f,_=`_worker_closure_data_${Nt(((h=e.$)==null?void 0:h.env.modulePath)??"")}`;return n.emitter.emitLine(`${t}${c}* ${_} = (${c}*)__yo_malloc(sizeof(${c}));`),n.emitter.emitLine(`${t}*${_} = ${p};`),n.emitter.emitLine(`${t}__yo_worker_spawn(${u}, ${_});`),""}function sm(e,t,n){let r=e.args[0];return r?`__yo_thread_set_maximum_threads(${B(r,t,n)})`:"// Error: __yo_thread_set_maximum_threads requires exactly 1 argument"}var cf=j(()=>{Ae();yn();zt();fn()});function lm(e,t){let n=t;if(!(n.inAsyncStateMachine||n.inEffectStateMachine)||!n.stateMachineVariables)return e;for(let[r,i]of n.stateMachineVariables)if(i.name===e)return`sm->${i.kind==="outer"?`__capture.${i.name}`:`var_${r}`}`;return e}function zr(e,t,n){let r=n;if(!(r.inAsyncStateMachine||r.inEffectStateMachine)||!r.stateMachineVariables)return;let i=r.stateMachineVariables.get(e);if(!i){for(let[,o]of r.stateMachineVariables)if(o.name===e){i=o;break}}if(i&&i.kind!=="outer"){if(i.type&&rt(i.type))return;let o=`var_${i.id}`,a=ve(e);n.emitter.emitLine(`${t}sm->${o} = ${a};`)}}function fm(e,t,n){var o,a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k,b,A,I,N,M,V,O,W,P,G,U,X,re,ee,fe,de,Q,pe,Z,me,ke,Fe,yt,le,Ee,ne,Ie,je,it,Mt,K,J,ae,Se,De,Re,Xe,nt,Wt,ar,Tt,sn,Dr,kt,hn,vn,Bn,kn,Te,be,we,he;if(((o=e.$)==null?void 0:o.value)!==void 0&&!Ge(e.$.value))return(a=e.$)!=null&&a.deferredDropExpressions&&bn(e,t,n),Pe(e.$.type)?"":Jn(e.$.value,n,e);let r=(s=e.func.$)==null?void 0:s.value,i=((l=e.func.$)==null?void 0:l.type)??($e(r)?r.specializedType??r.type:void 0);if(te(i)){let Ce=(u=e.$)==null?void 0:u.runtimeArgExprsInOrder;if(Ce){let Me=!1;if(S(e.func)&&T(e.func,".",2)){let ye=e.func.args[0],Ue=(c=ye==null?void 0:ye.$)==null?void 0:c.type;Ue&&ot(Ue)&&(Me=!0)}let pt=Ce.map((ye,Ue)=>{var We,gt,Ze,tt,Ve,bt,Le,ct,$t;if((We=ye.$)!=null&&We.variableName&&((gt=ye.$)!=null&&gt.type)){let xt=n,Yt=xt.currentClosureCaptures&&xt.currentClosureCaptures.includes(ye.$.variableName)&&H(ye)&&ye.$.env&&xt.currentClosureCaptureFrameLevel!==void 0&&Ui(ye.token.value,ye.$.env,xt.currentClosureCaptureFrameLevel),Pt=B(ye,t,n),qt=!1;if(H(ye)&&ye.$.env&&ye.$.variableName){let cr=ue(ye.$.env,ye.$.variableName);cr.length>0&&cr[cr.length-1].isCompileTimeOnly&&(qt=!0)}let In=(xt.inAsyncStateMachine||xt.inEffectStateMachine)&&Pt.startsWith("sm->"),Fr=!1;if(Pt&&Pt!==ye.$.variableName&&!Yt&&!In&&!qt){let cr=et(ye.$.variableName,ye.$.env);if(Pt!==cr){let yr=ye.$.convertedRuntimeType||ye.$.type,Bi=Jt(yr,ye.$.variableName,n);n.emitter.emitLine(`${t}${Bi} = ${Pt};`),Fr=!0,zr(ye.$.variableName,t,n)}}let lo=Fr?ye.$.variableName:Pt;if((Ze=ye.$)!=null&&Ze.deferredDupExpressions&&ye.$.deferredDupExpressions.length>0){let cr=new Set;(tt=ye.$)!=null&&tt.variableName&&cr.add(et(ye.$.variableName,ye.$.env)),Pt&&cr.add(Pt),H(ye)&&cr.add(et(ye.token.value,ye.$.env));let yr=ye.$.deferredDupExpressions.find(Bi=>{var Do;let uo=bu(Bi);return uo?cr.has(et(uo,(Do=Bi.$)==null?void 0:Do.env)):!1});yr&&(jt(ye,t,xt),S(yr)&&((Ve=yr.$)!=null&&Ve.variableName)&&(lo=et(yr.$.variableName,yr.$.env)))}if(Me&&Ue===0){if(S(e.func)&&T(e.func,".",2)){let yr=e.func.args[0],Bi=(bt=yr==null?void 0:yr.$)==null?void 0:bt.type,uo=e.func.args[1];if(H(uo)&&ot(Bi)){let Do=uo.token.value;if(Bi.trait.fields.find(uc=>uc.label===Do))return In?Pt:ve(lo,ye.$.type.isExtern==="c")}}let cr=(Le=ye.$)==null?void 0:Le.type;return cr&&_t(cr)?In?`${Pt}->data`:`${ve(lo,ye.$.type.isExtern==="c")}->data`:In?`(${Pt}).data`:`(${ve(lo,ye.$.type.isExtern==="c")}).data`}else return Yt||In||qt?Pt:ve(lo,ye.$.type.isExtern==="c")}else if(Me&&Ue===0){let xt=B(ye,t,n);if(S(e.func)&&T(e.func,".",2)){let Pt=e.func.args[0],qt=(ct=Pt==null?void 0:Pt.$)==null?void 0:ct.type,In=e.func.args[1];if(H(In)&&ot(qt)){let Fr=In.token.value;if(qt.trait.fields.find(cr=>cr.label===Fr))return xt}}let Yt=($t=ye.$)==null?void 0:$t.type;return Yt&&_t(Yt)?`(${xt})->data`:`(${xt}).data`}else return B(ye,t,n)}),Oe=pt.join(", ");if(i.isExtern==="yo"&&i.externName){let ye=i.externName;return ta.includes(ye)?Xs(ye,pt,e,n,t):ye==="__yo_thread_spawn"?om(e,t,n):ye==="__yo_worker_spawn"?am(e,t,n):Pe(i.return.type)?(n.emitter.emitLine(`${t}${ye}(${Oe});`),(f=e.$)!=null&&f.deferredDropExpressions&&bn(e,t,n),""):`${ye}(${Oe})`}{let ye=n;if((p=ye.currentEvidenceParams)!=null&&p.size){let Ue=(_=e.func.token)==null?void 0:_.value,We;if(Ue==="."&&S(e.func)&&T(e.func,".",2)){let gt=e.func.args[1];gt&&H(gt)&&(Ue=gt.token.value);let Ze=e.func.args[0];if(Ze&&H(Ze))We=Ze.token.value;else if(Ze&&S(Ze)&&T(Ze,".",2)){let tt=Ze.args[0];tt&&H(tt)&&(We=tt.token.value)}}if(Ue&&Ue!=="."){for(let gt of ye.currentEvidenceParams.values())if(gt.fieldLabel===Ue||gt.implicitLabel===Ue||gt.fieldPath[gt.fieldPath.length-1]===Ue){if(We&&We!==gt.implicitLabel)continue;return cm(gt.cParamName,i,pt,Ce,e,t,ye,gt)}}}}if($e(r)){let ye=Ra(r);if(ye)return Xs(ye,pt,e,n,t);let Ue=r.specializedType??r.type,We=n;if(We.currentEvidenceParams&&r.isModuleEffectMember){let Ze,tt=((d=e.func.$)==null?void 0:d.env)??((g=e.$)==null?void 0:g.env);if(tt)for(let Ve of We.currentEvidenceParams.values()){let bt=ue(tt,Ve.implicitLabel),Le=bt[bt.length-1],ct=(y=Le==null?void 0:Le.value)==null?void 0:y[0];if(ct&&At(ct)){let $t=ct,xt=!0;for(let Yt=0;Yt<Ve.fieldPath.length-1;Yt++){let Pt=Ve.fieldPath[Yt],qt=$t.type.fields.findIndex(In=>In.label===Pt);if(qt>=0&&$t.fields[qt]&&At($t.fields[qt]))$t=$t.fields[qt];else{xt=!1;break}}if(xt){let Yt=Ve.fieldPath[Ve.fieldPath.length-1],Pt=$t.type.fields.findIndex(qt=>qt.label===Yt);if(Pt>=0){let qt=$t.fields[Pt];if(qt&&$e(qt)&&qt.funcId===r.funcId){Ze=Ve;break}}}}}if(Ze){let Ve=Ze.cParamName;return cm(Ve,Ue,pt,Ce,e,t,We,Ze)}}let gt=(h=n.functions[r.funcId])==null?void 0:h.cName;if(gt){let Ze=r.specializedType??r.type,tt=An(Ze);if(tt.length===0&&r.specializedType){let Le=An(r.type);Le.length>0&&Le.some(ct=>ct.fieldFunctionType.forallParameters&&ct.fieldFunctionType.forallParameters.length>0)&&(tt=Le)}if(tt.length>0){let{args:Le,isHandlerInstallation:ct}=ff(tt,r,e,n);if(Le.length>0){let $t=Oe?`${Oe}, ${Le.join(", ")}`:Le.join(", ");return pf(gt,$t,Ue,e,Ce,t,n,ct)}}let Ve=r.isControlFunction||r.isModuleEffectMember||(($=(E=(v=r.body)==null?void 0:v.$)==null?void 0:E.effectAnalysis)==null?void 0:$.hasEffects),bt=!1;if(Ve){if(r.isControlFunction||r.isModuleEffectMember){let Le=((w=(C=e.func)==null?void 0:C.$)==null?void 0:w.env)??((k=e.$)==null?void 0:k.env);if(Le){let ct=Ps(Le,$t=>{var xt;return $t.isImplicit===!0&&$e((xt=$t.value)==null?void 0:xt[0])&&$t.value[0].funcId===r.funcId});ct>=0&&ct>Le.functionDeclarationFrameLevel&&((b=Le.frames[ct])!=null&&b.isBeginBlockFrame)&&(bt=!0)}}else if(r.specializedType){let Le=An(r.type);if(Le.length>0){let ct=((I=(A=e.func)==null?void 0:A.$)==null?void 0:I.env)??((N=e.$)==null?void 0:N.env);if(ct)for(let $t of Le){let xt=Ps(ct,Yt=>Yt.isImplicit===!0&&(Yt.name===$t.implicitLabel||Yt.name===$t.fieldLabel));if(xt>=0&&xt>ct.functionDeclarationFrameLevel&&((M=ct.frames[xt])!=null&&M.isBeginBlockFrame)){bt=!0;break}}}}}if(Pe(Ue.return.type))return n.emitter.emitLine(`${t}${gt}(${Oe});`),(V=e.$)!=null&&V.deferredDropExpressions&&bn(e,t,n),Ve&&um(t,n,bt,e),"";{let Le=(O=e.$)==null?void 0:O.variableName;if(Le){let ct=((W=r.specializedType)==null?void 0:W.return.type)??Ue.return.type,$t=(P=e.$)==null?void 0:P.type,xt=$t&&rt($t),Yt=ct&&rt(ct),Pt;if(xt&&Yt){let qt=r.body;if(qt&&T(qt,"begin")){let In=qt.args;if(In.length>0){let Fr=In[In.length-1];qn(Fr)&&(qt=Fr)}}if(qt&&qn(qt)&&((G=qt.$)!=null&&G.asyncStateMachineStructName)){let In=qt.$.asyncStateMachineStructName;Pt=`${In}*`,n.tempVarAsyncStructNames||(n.tempVarAsyncStructNames=new Map),n.tempVarAsyncStructNames.set(Le,In)}else $t&&z($t)&&$t.resolvedConcreteType?Pt=q($t,n):Pt=q(ct,n)}else Pt=q(ct??$t,n);return n.emitter.emitLine(`${t}${Pt} ${Le} = ${gt}(${Oe});`),zr(Le,t,n),(U=e.$)!=null&&U.deferredDropExpressions&&bn(e,t,n),Ve&&um(t,n,bt,e),Le}else return`// Error: Regular function call returns ${q(((X=r.specializedType)==null?void 0:X.return.type)??Ue.return.type,n)} but no temp variable assigned`}}}else{let ye=n.externFunctions[i.id];if(ye){let Ue=ye.cName;return(re=e.$)!=null&&re.deferredDropExpressions&&bn(e,t,n),`${Ue}(${Oe})`}else{let Ue=B(e.func,t,n);if(r&&te(r.type)){let Le=An(r.type);if(Le.length>0){let{args:ct,isHandlerInstallation:$t}=ff(Le,r,e,n);if(ct.length>0){let xt=Oe?`${Oe}, ${ct.join(", ")}`:ct.join(", ");return pf(Ue,xt,i,e,Ce,t,n,$t)}}}let We=((ee=e.$)==null?void 0:ee.type)??i.return.type,gt=q(We,n),Ze=i.parameters.filter(Le=>!Le.isCompileTimeOnly).map(Le=>q(Le.type,n)),tt=`((${gt} (*)(${Ze.join(", ")}))${Ue})`,Ve=n,bt=Ue.includes("__capture.")&&!!Ve.inAsyncStateMachine;if(bt&&n.emitter.emitLine(`${t}__yo_effect_escaped = 0;`),Pe(i.return.type)||Pe(We)){if(n.emitter.emitLine(`${t}${tt}(${Oe});`),(fe=e.$)!=null&&fe.deferredDropExpressions&&bn(e,t,n),bt){if(n.emitter.emitLine(`${t}if (__yo_effect_escaped) {`),Ce){for(let Le of Ce)if((de=Le.$)!=null&&de.variableName&&((Q=Le.$)!=null&&Q.type)&&ut(Le.$.type)){let ct=lm(ve(Le.$.variableName),n),$t=eo(ct,Le.$.type,n);$t&&(n.emitter.emitLine(`${t} ${$t};`),n.emitter.emitLine(`${t} memset(&${ct}, 0, sizeof(${ct}));`))}}ei({emitter:n.emitter,indent:t+" ",resultCode:void 0,debugLabel:void 0}),n.emitter.emitLine(`${t}}`)}return""}else{let Le=(pe=e.$)==null?void 0:pe.variableName;if(Le){let ct=i.return.type,$t=(Z=e.$)==null?void 0:Z.type,xt=$t&&ct&&rt($t)&&rt(ct)?ct:$t??ct;if(n.emitter.emitLine(`${t}${q(xt,n)} ${Le} = ${tt}(${Oe});`),zr(Le,t,n),(me=e.$)!=null&&me.deferredDropExpressions&&bn(e,t,n),bt){if(n.emitter.emitLine(`${t}if (__yo_effect_escaped) {`),Ce){for(let Yt of Ce)if((ke=Yt.$)!=null&&ke.variableName&&((Fe=Yt.$)!=null&&Fe.type)&&ut(Yt.$.type)){let Pt=lm(ve(Yt.$.variableName),n),qt=eo(Pt,Yt.$.type,n);qt&&(n.emitter.emitLine(`${t} ${qt};`),n.emitter.emitLine(`${t} memset(&${Pt}, 0, sizeof(${Pt}));`))}}ei({emitter:n.emitter,indent:t+" ",resultCode:void 0,debugLabel:void 0}),n.emitter.emitLine(`${t}}`)}return Le}else return`// Error: Function parameter call returns ${q(i.return.type,n)} but no temp variable assigned`}}}}}else if(i&&Qn(i)){let Ce=i,Me=or(Ce),pt=ot(Ce);{let Oe=Me.isFn.callType,ye=(yt=e.$)==null?void 0:yt.runtimeArgExprsInOrder;if(ye){let Ue=n;for(let Ve of ye)if((le=Ve.$)!=null&&le.variableName&&((Ee=Ve.$)!=null&&Ee.type)){let bt=Ue.currentClosureCaptures&&Ue.currentClosureCaptures.includes(Ve.$.variableName)&&H(Ve)&&Ve.$.env&&Ue.currentClosureCaptureFrameLevel!==void 0&&Ui(Ve.token.value,Ve.$.env,Ue.currentClosureCaptureFrameLevel),Le=B(Ve,t,n),ct=!1;if(H(Ve)&&Ve.$.env&&Ve.$.variableName){let xt=ue(Ve.$.env,Ve.$.variableName);xt.length>0&&xt[xt.length-1].isCompileTimeOnly&&(ct=!0)}let $t=(Ue.inAsyncStateMachine||Ue.inEffectStateMachine)&&Le.startsWith("sm->");if(Le&&Le!==Ve.$.variableName&&!bt&&!$t&&!ct){let xt=Ve.$.convertedRuntimeType||Ve.$.type,Yt=Jt(xt,Ve.$.variableName,n);n.emitter.emitLine(`${t}${Yt} = ${Le};`),zr(Ve.$.variableName,t,n)}}let We=B(e.func,t,n),gt=ye.map(Ve=>{var bt,Le,ct,$t;if((bt=Ve.$)!=null&&bt.variableName&&((Le=Ve.$)!=null&&Le.type)){if(Ue.currentClosureCaptures&&Ue.currentClosureCaptures.includes(Ve.$.variableName)&&H(Ve)&&Ve.$.env&&Ue.currentClosureCaptureFrameLevel!==void 0&&Ui(Ve.token.value,Ve.$.env,Ue.currentClosureCaptureFrameLevel))return B(Ve,t,n);{let Yt=et(Ve.$.variableName,Ve.$.env),Pt=(Ue.inAsyncStateMachine||Ue.inEffectStateMachine)&&Yt.startsWith("sm->"),qt=Yt;if((ct=Ve.$)!=null&&ct.deferredDupExpressions&&Ve.$.deferredDupExpressions.length>0){jt(Ve,t,Ue);let In=Ve.$.deferredDupExpressions[0];S(In)&&(($t=In.$)!=null&&$t.variableName)&&(qt=et(In.$.variableName,In.$.env))}return Pt?Yt:qt}}else return B(Ve,t,n)}),Ze;if(pt){let Ve=[`(${We}).data`,...gt];Ze=`(${We}).vtable->call(${Ve.join(", ")})`}else{let Ve;if(z(Ce)){let Le=Ce;Le.resolvedConcreteType&&(Ve=Le.resolvedConcreteType.id)}let bt=Ve?n.implClosureCallMap.get(Ve):void 0;if(bt){let Le=An(Oe);if(Le.length>0){let{args:$t,isHandlerInstallation:xt}=ff(Le,{},e,Ue);if($t.length>0){let Yt=[`&(${We})`,...gt,...$t];return pf(bt.functionCName,Yt.join(", "),Oe,e,ye,t,Ue,xt)}}let ct=[`&(${We})`,...gt];Ze=`${bt.functionCName}(${ct.join(", ")})`}else{let Le=[`(${We}).data`,...gt];Ze=`(${We}).call(${Le.join(", ")})`}}let tt=Oe.return.type;if(Pe(tt))return n.emitter.emitLine(`${t}${Ze};`),(ne=e.$)!=null&&ne.deferredDropExpressions&&bn(e,t,n),"";{let Ve=(Ie=e.$)==null?void 0:Ie.variableName;return Ve?(n.emitter.emitLine(`${t}${q(tt,n)} ${Ve} = ${Ze};`),zr(Ve,t,n),(je=e.$)!=null&&je.deferredDropExpressions&&bn(e,t,n),Ve):`// Error: Closure call returns ${q(tt,n)} but no temp variable assigned`}}else return"// Error: No runtime args found for closure call"}}else if(Y(r))if(ze(r.value)){let Ce=r.value,Me=(it=e.$)==null?void 0:it.runtimeArgExprsInOrder,pt=(Mt=n.types[Ce.id])==null?void 0:Mt.cName,Oe=Ce.fields.map(Ue=>Ue.label),ye=(K=e.$)==null?void 0:K.variableName;if(Me&&pt&&Oe.length===Me.length){if(Ce.isNewtype&&Ce.fields.length===1){let Ue=Me[0],We=B(Ue,t,n),gt=We;if((J=Ue.$)!=null&&J.deferredDupExpressions&&Ue.$.deferredDupExpressions.length>0){let tt=n;if((ae=Ue.$)!=null&&ae.variableName&&((Se=Ue.$)!=null&&Se.type)){let bt=et(Ue.$.variableName,Ue.$.env);if(We!==bt){let Le=Ue.$.type,ct=q(Le,n);n.emitter.emitLine(`${t}${ct} ${bt} = ${We};`)}}jt(Ue,t,tt);let Ve=Ue.$.deferredDupExpressions[0];S(Ve)&&((De=Ve.$)!=null&&De.variableName)&&(gt=et(Ve.$.variableName,Ve.$.env))}let Ze=`((${pt})(${gt}))`;if(ye&&((Re=e.$)!=null&&Re.type)){let tt=Jt(e.$.type,ye,n);return n.emitter.emitLine(`${t}${tt} = ${Ze};`),zr(ye,t,n),ye}else return Ze}if(Ce.isReferenceSemantics){let Ue=n,We=Me.map(tt=>{var bt,Le,ct,$t;let Ve=B(tt,t,n);if((bt=tt.$)!=null&&bt.deferredDupExpressions&&tt.$.deferredDupExpressions.length>0){if((Le=tt.$)!=null&&Le.variableName&&((ct=tt.$)!=null&&ct.type)){let Yt=et(tt.$.variableName,tt.$.env);if(Ve!==Yt){let Pt=tt.$.type,qt=q(Pt,n);n.emitter.emitLine(`${t}${qt} ${Yt} = ${Ve};`)}}jt(tt,t,Ue);let xt=tt.$.deferredDupExpressions[0];if(S(xt)&&(($t=xt.$)!=null&&$t.variableName))return et(xt.$.variableName,xt.$.env)}return Ve}).join(", "),Ze=`${`__yo_new_${pt}`}(${We})`;if(ye&&((Xe=e.$)!=null&&Xe.type)){let tt=Jt(e.$.type,ye,n);return n.emitter.emitLine(`${t}${tt} = ${Ze};`),zr(ye,t,n),ye}else return Ze}else{let Ue=n,We=Me.map((Ze,tt)=>{var ct,$t,xt,Yt;let Ve=B(Ze,t,n),bt=st(Ce)?`_${tt}`:ve(Oe[tt],Ce.isExtern==="c"),Le=Ve;if((ct=Ze.$)!=null&&ct.deferredDupExpressions&&Ze.$.deferredDupExpressions.length>0){if(($t=Ze.$)!=null&&$t.variableName&&((xt=Ze.$)!=null&&xt.type)){let qt=et(Ze.$.variableName,Ze.$.env),In=Ze.$.type,Fr=q(In,n);Ve!==qt&&n.emitter.emitLine(`${t}${Fr} ${qt} = ${Ve};`)}jt(Ze,t,Ue);let Pt=Ze.$.deferredDupExpressions[0];S(Pt)&&((Yt=Pt.$)!=null&&Yt.variableName)&&(Le=et(Pt.$.variableName,Pt.$.env))}return`.${bt} = `+Le}).join(", "),gt=`(${pt}){ ${We} }`;if(ye&&((nt=e.$)!=null&&nt.type)){let Ze=Jt(e.$.type,ye,n);return n.emitter.emitLine(`${t}${Ze} = ${gt};`),zr(ye,t,n),ye}else return gt}}}else{if(Qn(r.value))return"// Error: Closure construction should have been handled by closureFunctionValue check at top of generateFuncCall";if(ln(r.value)){let Ce=(Wt=e.$)==null?void 0:Wt.variableName,Me=e.args[0];if(Me&&S(Me)&&T(Me,":",2)){let pt=Me.args[0],Oe=Me.args[1],ye=(ar=n.types[r.value.id])==null?void 0:ar.cName;if(ye&&H(pt)&&Oe){let Ue=n,We=pt.token.value,gt=et(We,(Tt=pt.$)==null?void 0:Tt.env),tt=B(Oe,t,n);if((sn=Oe.$)!=null&&sn.deferredDupExpressions&&Oe.$.deferredDupExpressions.length>0){jt(Oe,t,Ue);let bt=Oe.$.deferredDupExpressions[0];S(bt)&&((Dr=bt.$)!=null&&Dr.variableName)&&(tt=et(bt.$.variableName,bt.$.env))}let Ve=`(${ye}){ .${gt} = ${tt} }`;if(Ce&&((kt=e.$)!=null&&kt.type)){let bt=Jt(e.$.type,Ce,n);return n.emitter.emitLine(`${t}${bt} = ${Ve};`),zr(Ce,t,n),Ce}else return Ve}}}else if(qe(r.value)){let Ce=r.value,Me=(hn=e.$)==null?void 0:hn.runtimeArgExprsInOrder,pt=(vn=n.types[Ce.id])==null?void 0:vn.cName,Oe=(Bn=e.$)==null?void 0:Bn.variableName;if(Ce.selectedVariantName&&Me&&pt){if(Hn(Ce)){let Ze=Ce.selectedVariantName,tt=Ce.variants.find(Ve=>Ve.name===Ze);if(tt){if(!tt.fields||tt.fields.length===0){let Ve="NULL";if(Oe&&((kn=e.$)!=null&&kn.type)){let bt=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${bt} = ${Ve};`),zr(Oe,t,n),Oe}else return Ve}else if(tt.fields.length===1){let Ve=B(Me[0],t,n);if(Oe&&((Te=e.$)!=null&&Te.type)){let bt=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${bt} = ${Ve};`),zr(Oe,t,n),Oe}else return Ve}}}if(Ur(Ce)){let Ze=Ce.selectedVariantName,tt=Zn(Ce,Ze,n);if(Oe&&((be=e.$)!=null&&be.type)){let Ve=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${Ve} = ${tt};`),zr(Oe,t,n),Oe}else return tt}let We=Ce.selectedVariantName,gt=Ce.variants.find(Ze=>Ze.name===We);if(gt){let Ze=((we=gt.fields)==null?void 0:we.filter(Le=>!Pe(Le.type)))||[],tt=n,Ve=Me.map((Le,ct)=>{var $t,xt,Yt,Pt,qt;if(gt.fields){let In=gt.fields[ct];if(In&&!Pe(In.type)){let Fr=B(Le,t,n),lo=et(In.label,($t=Le.$)==null?void 0:$t.env),cr=Fr;if((xt=Le.$)!=null&&xt.variableName&&((Yt=Le.$)!=null&&Yt.type)){let yr=tt.currentClosureCaptures&&tt.currentClosureCaptures.includes(Le.$.variableName)&&H(Le)&&Le.$.env&&tt.currentClosureCaptureFrameLevel!==void 0&&Ui(Le.token.value,Le.$.env,tt.currentClosureCaptureFrameLevel),Bi=(tt.inAsyncStateMachine||tt.inEffectStateMachine)&&Fr.startsWith("sm->"),uo=!1;if(H(Le)&&Le.$.env&&Le.$.variableName){let fa=ue(Le.$.env,Le.$.variableName);fa.length>0&&fa[fa.length-1].isCompileTimeOnly&&(uo=!0)}let Do=!1;if(Fr&&Fr!==Le.$.variableName&&!yr&&!Bi&&!uo){let fa=et(Le.$.variableName,Le.$.env);if(Fr!==fa){let uc=Jt(Le.$.type,Le.$.variableName,n);n.emitter.emitLine(`${t}${uc} = ${Fr};`),Do=!0,zr(Le.$.variableName,t,n)}}Do&&(cr=et(Le.$.variableName,Le.$.env))}if((Pt=Le.$)!=null&&Pt.deferredDupExpressions&&Le.$.deferredDupExpressions.length>0){jt(Le,t,tt);let yr=Le.$.deferredDupExpressions[0];S(yr)&&((qt=yr.$)!=null&&qt.variableName)&&(cr=et(yr.$.variableName,yr.$.env))}return`.${lo} = `+cr}return""}else return""}).filter(Le=>Le).join(", "),bt=Ze.length>0?`(${pt}){ .tag = ${Zn(Ce,We,n)}, .data = { .${We} = { ${Ve} } } }`:`(${pt}){ .tag = ${Zn(Ce,We,n)} }`;if(Oe&&((he=e.$)!=null&&he.type)){let Le=Jt(e.$.type,Oe,n);return n.emitter.emitLine(`${t}${Le} = ${bt};`),zr(Oe,t,n),Oe}else return bt}}}}else if(at(i)){let Ce=e.args[0];if(Ce&&S(Ce)&&T(Ce,":")){let Oe=B(e.func,t,n),ye=B(Ce.args[0],t,n),Ue=B(Ce.args[1],t,n),We=`Slice_${ve(q(i.childType,n))}`;return n.sliceStructTypes.has(We)||n.sliceStructTypes.set(We,{childType:q(i.childType,n)}),`(${We}){ .data = &${Oe}.data[${ye}], .length = (${Ue}) - (${ye}) }`}else if(Ce&&H(Ce)&&Ce.token.value===":"){let Oe=B(e.func,t,n),ye=i,Ue=ye.childType,We=`Slice_${ve(q(Ue,n))}`;return n.sliceStructTypes.has(We)||n.sliceStructTypes.set(We,{childType:q(Ue,n)}),wt(ye.length)?`(${We}){ .data = &${Oe}.data[0], .length = ${ye.length.value} }`:"/* Error: Cannot slice array with non-compile-time length */"}let Me=B(e.func,t,n),pt=B(Ce,t,n);return`${Me}.data[${pt}]`}else if(Rt(i)){let Ce=e.args[0];if(Ce&&S(Ce)&&T(Ce,":")){let Oe=B(e.func,t,n),ye=B(Ce.args[0],t,n),Ue=B(Ce.args[1],t,n),We=`Slice_${ve(q(i.childType,n))}`;return n.sliceStructTypes.has(We)||n.sliceStructTypes.set(We,{childType:q(i.childType,n)}),`(${We}){ .data = &${Oe}.data[${ye}], .length = (${Ue}) - (${ye}) }`}else if(Ce&&H(Ce)&&Ce.token.value===":"){let Oe=B(e.func,t,n),ye=`Slice_${ve(q(i.childType,n))}`;return n.sliceStructTypes.has(ye)||n.sliceStructTypes.set(ye,{childType:q(i.childType,n)}),`(${ye}){ .data = ${Oe}.data, .length = ${Oe}.length }`}let Me=B(e.func,t,n),pt=B(Ce,t,n);return`${Me}.data[${pt}]`}else if(i&&_t(i)&&Rt(i.childType)){let Ce=B(e.func,t,n),Me=B(e.args[0],t,n);return`${Ce}.data[${Me}]`}}function um(e,t,n,r){var o,a;let i=t.emitter;if(i.emitLine(`${e}if (__yo_effect_escaped) {`),t.inAsyncStateMachine||(Tr(e+" ",t,r,!1,!0,!1),$i(e+" ",t,r)),t.inAsyncStateMachine)n&&i.emitLine(`${e} __yo_effect_escaped = 0;`),ei({emitter:i,indent:e+" ",resultCode:void 0,debugLabel:void 0});else if(n){i.emitLine(`${e} __yo_effect_escaped = 0;`);let s=(o=t.currentFunctionType)==null?void 0:o.return.type;if(s&&!Pe(s)){let l=q(s,t);l!=="void"?(i.emitLine(`${e} ${l} _esc_result;`),i.emitLine(`${e} memcpy(&_esc_result, __yo_effect_escape_value, sizeof(${l}));`),i.emitLine(`${e} return _esc_result;`)):i.emitLine(`${e} return;`)}else i.emitLine(`${e} return;`)}else{let s=(a=t.currentFunctionType)==null?void 0:a.return.type;if(s&&!Pe(s)){let l=q(s,t);l!=="void"?i.emitLine(`${e} return (${l}){0};`):i.emitLine(`${e} return;`)}else i.emitLine(`${e} return;`)}i.emitLine(`${e}}`)}function cm(e,t,n,r,i,o,a,s){var p,_,d,g,y,h,v,E,$,C,w,k;let l=n.join(", "),u=t.return.type,c=a.emitter,f;if(s!=null&&s.fieldFunctionType.forallParameters&&s.fieldFunctionType.forallParameters.length>0){let b=(p=i.$)!=null&&p.type?q(i.$.type,a):q(u,a),A=[],N=s.fieldFunctionType.parameters.filter(V=>!V.isCompileTimeOnly);for(let V=0;V<N.length;V++){let O=N[V].type,W=z(O)&&((d=(_=r==null?void 0:r[V])==null?void 0:_.$)!=null&&d.type)?r[V].$.type:O,P=te(W)?Pi(W,"(*)",a):q(W,a);A.push(P)}let M=A.join(", ");f=`((${b} (*)(${M}))${e})`}else f=e;if(Pe(u)){if(c.emitLine(`${o}${f}(${l});`),(g=i.$)!=null&&g.deferredDropExpressions&&bn(i,o,a),c.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,i,!1,!0,!1),$i(o+" ",a,i)),a.inAsyncStateMachine)ei({emitter:c,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let b=(y=a.currentFunctionType)==null?void 0:y.return.type;if(b&&!Pe(b)){let A=q(b,a);A!=="void"?c.emitLine(`${o} return (${A}){0};`):c.emitLine(`${o} return;`)}else c.emitLine(`${o} return;`)}return c.emitLine(`${o}}`),""}else{let b=(h=i.$)==null?void 0:h.variableName;if(b){let A=(v=s==null?void 0:s.fieldFunctionType.forallParameters)!=null&&v.length&&((E=i.$)!=null&&E.type)?i.$.type:u,I=q(A,a);if(I==="void"||Pe(A)){if(c.emitLine(`${o}${f}(${l});`),($=i.$)!=null&&$.deferredDropExpressions&&bn(i,o,a),c.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,i,!1,!0,!1),$i(o+" ",a,i)),a.inAsyncStateMachine)ei({emitter:c,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let N=(C=a.currentFunctionType)==null?void 0:C.return.type;if(N&&!Pe(N)){let M=q(N,a);M!=="void"?c.emitLine(`${o} return (${M}){0};`):c.emitLine(`${o} return;`)}else c.emitLine(`${o} return;`)}return c.emitLine(`${o}}`),""}if(c.emitLine(`${o}${I} ${b} = ${f}(${l});`),(w=i.$)!=null&&w.deferredDropExpressions&&bn(i,o,a),c.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,i,!1,!0,!1),$i(o+" ",a,i)),a.inAsyncStateMachine)ei({emitter:c,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let N=(k=a.currentFunctionType)==null?void 0:k.return.type;if(N&&!Pe(N)){let M=q(N,a);M!=="void"?c.emitLine(`${o} return (${M}){0};`):c.emitLine(`${o} return;`)}else c.emitLine(`${o} return;`)}return c.emitLine(`${o}}`),b}else return`${f}(${l})`}}function ff(e,t,n,r){var s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k;let i=[],o=(l=(s=t.body)==null?void 0:s.$)==null?void 0:l.effectAnalysis,a=!1;for(let b of e){let A=`${b.implicitLabel}.${b.fieldLabel}`,I=!1;if(r.currentEvidenceParams){let N=r.currentEvidenceParams.get(A);N&&(i.push(N.cParamName),I=!0)}if(!I){if(o){if(o.effectHandlerInfos)for(let N of o.effectHandlerInfos){if(N.effectParameterName!==b.fieldLabel&&N.effectParameterName!==b.implicitLabel)continue;let M=N.handlerValue;if(M&&$e(M)){if((u=M.specializedFunctionCaches)!=null&&u.length){let O=M.specializedFunctionCaches[0].specializedFunction,W=(c=r.functions[O.funcId])==null?void 0:c.cName;if(W){i.push(`(void*)${W}`),I=!0,a=!0;break}}let V=(f=r.functions[M.funcId])==null?void 0:f.cName;if(V){i.push(V),I=!0,a=!0;break}}}if(!I&&o.handlerValue&&e.length===1){let N=o.handlerValue;if(N&&$e(N)){if((p=N.specializedFunctionCaches)!=null&&p.length){let M=N.specializedFunctionCaches[0].specializedFunction,V=(_=r.functions[M.funcId])==null?void 0:_.cName;V&&(i.push(`(void*)${V}`),I=!0,a=!0)}if(!I){let M=(d=r.functions[N.funcId])==null?void 0:d.cName;M&&(i.push(M),I=!0,a=!0)}}}}if(!I){let N=((g=n.func.$)==null?void 0:g.env)??((y=n.$)==null?void 0:y.env);if(N){let M=ue(N,b.implicitLabel),V=hr(N,U=>U.isImplicit===!0&&te(U.type)&&te(b.fieldFunctionType)&&U.type===b.fieldFunctionType),O=M[M.length-1],W=V[V.length-1],P=W&&W!==O?W:O??W,G=(h=P==null?void 0:P.value)==null?void 0:h[0];if(G&&At(G)){let U=G,X=!0;for(let re=0;re<b.fieldPath.length-1;re++){let ee=b.fieldPath[re],fe=U.type.fields.findIndex(de=>de.label===ee);if(fe>=0&&U.fields[fe]&&At(U.fields[fe]))U=U.fields[fe];else{X=!1;break}}if(X){let re=b.fieldPath[b.fieldPath.length-1],ee=U.type.fields.findIndex(fe=>fe.label===re);if(ee>=0){let fe=U.fields[ee];if(fe&&$e(fe)){if(((v=fe.specializedFunctionCaches)==null?void 0:v.length)>0){let de=fe.specializedFunctionCaches[0].specializedFunction,Q=(E=r.functions[de.funcId])==null?void 0:E.cName;Q&&(i.push(`(void*)${Q}`),I=!0)}if(!I){let de=($=r.functions[fe.funcId])==null?void 0:$.cName;de&&(i.push(de),I=!0)}}}}}else if(G&&$e(G)){if((C=G.specializedFunctionCaches)!=null&&C.length){let U=G.specializedFunctionCaches[0].specializedFunction,X=(w=r.functions[U.funcId])==null?void 0:w.cName;X&&(i.push(`(void*)${X}`),I=!0)}if(!I){let U=(k=r.functions[G.funcId])==null?void 0:k.cName;U&&(i.push(U),I=!0)}}I&&(a=!0)}}if(!I&&r.stateMachineVariables){let N=b.fieldPath[b.fieldPath.length-1];for(let[,M]of r.stateMachineVariables)if(M.name===N&&M.kind==="outer"){i.push(`sm->__capture.${N}`),I=!0;break}}if(!I)break}}return{args:i,isHandlerInstallation:a}}function pf(e,t,n,r,i,o,a,s=!1){var c,f,p,_,d;let l=a.emitter,u=n.return.type;if(l.emitLine(`${o}__yo_effect_escaped = 0;`),Pe(u)){if(l.emitLine(`${o}${e}(${t});`),(c=r.$)!=null&&c.deferredDropExpressions&&bn(r,o,a),l.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,r,!1,!0,!1),$i(o+" ",a,r)),a.inAsyncStateMachine)ei({emitter:l,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let g=(f=a.currentFunctionType)==null?void 0:f.return.type;if(s&&l.emitLine(`${o} __yo_effect_escaped = 0;`),g&&!Pe(g))if(s){let y=q(g,a);y!=="void"?(l.emitLine(`${o} ${y} _esc_result;`),l.emitLine(`${o} memcpy(&_esc_result, __yo_effect_escape_value, sizeof(${y}));`),l.emitLine(`${o} return _esc_result;`)):l.emitLine(`${o} return;`)}else{let y=q(g,a);y!=="void"?l.emitLine(`${o} return (${y}){0};`):l.emitLine(`${o} return;`)}else l.emitLine(`${o} return;`)}return l.emitLine(`${o}}`),""}else{let g=(p=r.$)==null?void 0:p.variableName;if(g){let y=q(u,a);if(l.emitLine(`${o}${y} ${g} = ${e}(${t});`),zr(g,o,a),(_=r.$)!=null&&_.deferredDropExpressions&&bn(r,o,a),l.emitLine(`${o}if (__yo_effect_escaped) {`),a.inAsyncStateMachine||(Tr(o+" ",a,r,!1,!0,!1),$i(o+" ",a,r)),a.inAsyncStateMachine)ei({emitter:l,indent:o+" ",resultCode:void 0,debugLabel:void 0});else{let h=(d=a.currentFunctionType)==null?void 0:d.return.type;if(s&&h&&!Pe(h)){let v=q(h,a);l.emitLine(`${o} ${v} _esc_result;`),l.emitLine(`${o} memcpy(&_esc_result, __yo_effect_escape_value, sizeof(${v}));`),l.emitLine(`${o} __yo_effect_escaped = 0;`),l.emitLine(`${o} return _esc_result;`)}else if(h&&!Pe(h)){let v=q(h,a);v!=="void"?l.emitLine(`${o} return (${v}){0};`):l.emitLine(`${o} return;`)}else s&&l.emitLine(`${o} __yo_effect_escaped = 0;`),l.emitLine(`${o} return;`)}return l.emitLine(`${o}}`),g}else return`${e}(${t})`}}var pm=j(()=>{ft();Jr();Gt();ce();Ae();Je();ge();zs();qa();zt();ea();Hs();Ua();vr();fn();sf();cf();Ks()});function _m(e,t,n){var a,s;let r=n.emitter,i=(a=e.$)==null?void 0:a.type;if(!i)return"// Error: panic() missing type information";if(e.args.length===0)r.emitLine(`${t}abort();`);else if(e.args.length===1){let l=e.args[0];if((s=l.$)!=null&&s.value&&St(l.$.value)){let u=l.$.value.value;r.emitLine(`${t}fprintf(stderr, "%s\\n", ${JSON.stringify(u)});`),r.emitLine(`${t}abort();`)}else{let u=B(l,t,n);r.emitLine(`${t}fprintf(stderr, "%s\\n", ${u});`),r.emitLine(`${t}abort();`)}}else return`// Error: panic accepts 0 or 1 arguments, got ${e.args.length}`;return`(*((${q(i,n)}*)NULL))`}var dm=j(()=>{ge();zt();fn()});function mm(e,t,n){var l,u,c,f,p,_,d,g,y,h;if(e.args.length!==2)return"/* ERROR: field access requires exactly 2 arguments */";let r=e.args[0],i=e.args[1];if(!r||!i)return"/* ERROR: invalid field access arguments */";let o=B(r,t,n),a=(l=r.$)==null?void 0:l.type,s=(u=r.$)==null?void 0:u.value;if(H(i)){let v=i.token.value,E=n;if(E.currentEvidenceParams&&H(r)){let C=`${r.token.value}.${v}`,w=E.currentEvidenceParams.get(C);if(w)return w.cParamName}if((c=e.$)!=null&&c.value&&$e(e.$.value)){let $=e.$.value;return((f=n.functions[$.funcId])==null?void 0:f.cName)||$.funcId}if(!((p=e.$)!=null&&p.value)&&(F.___dispose.includes(v)||F.___drop.includes(v)||F.___dup.includes(v))&&a){let $=null;if((ze(a)||qe(a))&&($=a.trait),$){let C=$.fields.find(w=>w.label===v&&w.assignedValue&&$e(w.assignedValue));if(C&&$e(C.assignedValue)){let w=C.assignedValue;return((_=n.functions[w.funcId])==null?void 0:_.cName)||w.funcId}else return`/* ERROR: Rc method ${v} not found in type module */`}else return`/* ERROR: No module found for Rc method ${v} */`}if(Qe(a)||At(s)){let $=(d=e.$)==null?void 0:d.value;if($){if(Ge($)){if($.variableName)return et($.variableName,(g=e.$)==null?void 0:g.env);if((E.inAsyncStateMachine||E.inEffectStateMachine)&&E.stateMachineVariables){for(let[,C]of E.stateMachineVariables)if(C.name===v&&C.kind==="outer")return`sm->__capture.${v}`}}else if(!At($))return Jn($,n,e)}return et(v,(y=e.$)==null?void 0:y.env)}if(Gi(a)&&a.fields.length===1){let $=a.fields[0];if($&&$.label===v)return o}if(qe(a)){let $=a;if(Hn($))return o;for(let w of $.variants)if(w.fields){for(let k of w.fields)if(k.label===v){let b=w.name;return`${o}.data.${b}.${ve(v)}`}}return`/* ERROR: field ${v} not found in enum ${$.typeName} */`}else if(Y(s)&&qe(s.value)){let $=s.value,C=$.variants.find(k=>k.name===v),w=(h=n.types[$.id])==null?void 0:h.cName;if(C&&!C.fields&&w){let k=Zn($,C.name,n);return`(${w}){ .tag = ${k}, .data = { } }`}}else{if(En(a)&&v==="*")return`${o}->value`;if(_t(a)){if(v==="*")return`(*${o})`;if(Rt(a.childType))return`${o}->${ve(v)}`;{let $=0,C=a;for(;_t(C);)$++,C=C.childType;if($>0&&ze(C)&&C.isReferenceSemantics&&$++,Gi(C)&&C.fields.length===1){let w=C.fields[0];if(w&&w.label===v)return $===1?`(*${o})`:`${"*".repeat($)}(${o})`}return $>0?$===1?`${o}->${ve(v)}`:`${`(${"*".repeat($-1)}${o})`}->${ve(v)}`:`${o}.${ve(v)}`}}else if(st(a)){if(v.match(/^\d+$/))return`${o}._${v}`;{let $=a.fields.findIndex(C=>C.label===v);return`${o}._${$}`}}else return ot(a)?`${o}.vtable->${ve(v)}`:rn(a)?`${o}->${ve(v)}`:`${o}.${ve(v)}`}}return"/* ERROR: field name must be an identifier */"}var ym=j(()=>{ce();Ae();ge();zt();Ua();fn()});function gm(e,t,n){var l,u,c,f,p;if(!((l=e.$)==null?void 0:l.type))return`// Error: No type information for pointer/reference expression ${L(e)}
10659
+ `;let i=e.args[0];if(S(i)){let _=(u=i.func.$)==null?void 0:u.type;if(_&&at(_)){let d=i.args[0];if(d&&S(d)&&T(d,":")){let g=B(i.func,t,n),y=B(d.args[0],t,n),h=B(d.args[1],t,n),v=`Slice_${ve(q(_.childType,n))}`;return n.sliceStructTypes.has(v)||n.sliceStructTypes.set(v,{childType:q(_.childType,n)}),`(${v}){ .data = &${g}.data[${y}], .length = ${h} - ${y} }`}else if(d&&H(d)&&d.token.value===":"){let g=B(i.func,t,n),y=_,h=y.childType,v=`Slice_${ve(q(h,n))}`;return n.sliceStructTypes.has(v)||n.sliceStructTypes.set(v,{childType:q(h,n)}),wt(y.length)?`(${v}){ .data = &${g}.data[0], .length = ${y.length.value} }`:"/* Error: Cannot slice array with non-compile-time length */"}}else if(_&&(Rt(_)||_t(_)&&Rt(_.childType))){let d=Rt(_)?_:_.childType,g=i.args[0];if(g&&S(g)&&T(g,":")){let y=B(i.func,t,n),h=B(g.args[0],t,n),v=B(g.args[1],t,n),E=`Slice_${ve(q(d.childType,n))}`;return n.sliceStructTypes.has(E)||n.sliceStructTypes.set(E,{childType:q(d.childType,n)}),`(${E}){ .data = &${y}.data[${h}], .length = ${v} - ${h} }`}else if(g&&H(g)&&g.token.value===":"){let y=B(i.func,t,n),h=`Slice_${ve(q(d.childType,n))}`;return n.sliceStructTypes.has(h)||n.sliceStructTypes.set(h,{childType:q(d.childType,n)}),`(${h}){ .data = ${y}.data, .length = ${y}.length }`}}}let o=(c=i.$)==null?void 0:c.value,a=(f=i.$)==null?void 0:f.type;if(o!==void 0&&a){if(wt(o)||Lt(o)){let _=B(i,t,n);return`(&(${q(a,n)}){${_}})`}if(St(o)&&((p=i.$)!=null&&p.convertedRuntimeType))return`(&${B(i,t,n)})`}return`(&${B(i,t,n)})`}var hm=j(()=>{ce();Ae();ge();zt();fn()});function vm(e,t,n){let r=e.args[0];return r?`__yo_decr_rc(${B(r,t,n)})`:"// Error: __yo_decr_rc requires exactly 1 argument"}function Tm(e,t,n){let r=e.args[0];return r?`__yo_incr_rc(${B(r,t,n)})`:"// Error: __yo_incr_rc requires exactly 1 argument"}function Em(e,t,n){let r=e.args[0];return r?B(r,t,n):"// Error: __yo_rc_own requires exactly 1 argument"}function $m(e,t,n){var f;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_drop_array_element requires exactly 2 arguments";let o=B(r,t,n),a=B(i,t,n),s=(f=r.$)==null?void 0:f.type;if(!s||!at(s))return"// Error: __yo_drop_array_element requires an array type";let l=s.childType,u=z(l)&&l.resolvedConcreteType?l.resolvedConcreteType:l;if(at(u)){let p=u.length;if(!wt(p))return"// Error: array element has non-constant length";let _=`i_${Math.floor(Math.random()*1e6)}`,d=n.emitter;d.emitLine(`for (size_t ${_} = 0; ${_} < ${p.value}; ${_}++) {`);let g=`(${o}).data[${a}].data[${_}]`;d.emitLine(" { // drop nested array element");let y=eo(g,u.childType,n);return y&&d.emitLine(` ${y};`),d.emitLine(" }"),d.emitLine("}"),""}let c=Ri(u,n);return c?`${c}((${o}).data[${a}])`:"// No drop function for array element type"}function bm(e,t,n){var f;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_dup_array_element requires exactly 2 arguments";let o=B(r,t,n),a=B(i,t,n),s=(f=r.$)==null?void 0:f.type;if(!s||!at(s))return"// Error: __yo_dup_array_element requires an array type";let l=s.childType,u=z(l)&&l.resolvedConcreteType?l.resolvedConcreteType:l;if(at(u)){let p=u.length;if(!wt(p))return"// Error: array element has non-constant length";let _=`temp_array_${Math.floor(Math.random()*1e6)}`,d=`i_${Math.floor(Math.random()*1e6)}`,g=q(u,n),y=n.emitter;y.emitLine(`${g} ${_} = (${o}).data[${a}];`),y.emitLine(`for (size_t ${d} = 0; ${d} < ${p.value}; ${d}++) {`);let h=Pa(`${_}.data[${d}]`,u.childType,n);return y.emitLine(` ${_}.data[${d}] = ${h};`),y.emitLine("}"),_}let c=ti(u,n);return c?`${c}((${o}).data[${a}])`:"// No dup function for array element type"}function Cm(e,t,n){var p,_;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_drop_tuple_element requires exactly 2 arguments";let o=B(r,t,n);B(i,t,n);let a=(p=r.$)==null?void 0:p.type;if(!a||!st(a))return"// Error: __yo_drop_tuple_element requires a tuple type";let s=(_=i.$)==null?void 0:_.value;if(!wt(s))return"// Error: __yo_drop_tuple_element requires a constant index";let l=Number(s.value);if(l<0||l>=a.fields.length)return"// Error: __yo_drop_tuple_element index out of bounds";let u=a.fields[l].type,c=z(u)&&u.resolvedConcreteType?u.resolvedConcreteType:u;if(st(c)){let d=`(${o})._${l}`;return eo(d,c,n)}let f=Ri(c,n);return f?`${f}((${o})._${l})`:"// No drop function for tuple element type"}function km(e,t,n){var p,_;let r=e.args[0],i=e.args[1];if(!r||!i)return"// Error: __yo_dup_tuple_element requires exactly 2 arguments";let o=B(r,t,n);B(i,t,n);let a=(p=r.$)==null?void 0:p.type;if(!a||!st(a))return"// Error: __yo_dup_tuple_element requires a tuple type";let s=(_=i.$)==null?void 0:_.value;if(!wt(s))return"// Error: __yo_dup_tuple_element requires a constant index";let l=Number(s.value);if(l<0||l>=a.fields.length)return"// Error: __yo_dup_tuple_element index out of bounds";let u=a.fields[l].type,c=z(u)&&u.resolvedConcreteType?u.resolvedConcreteType:u;if(st(c)){let d=`(${o})._${l}`;return Pa(d,c,n)}let f=ti(c,n);return f?`${f}((${o})._${l})`:"// No dup function for tuple element type"}function wm(e,t,n){var a,s;let r=e.args[0];if(!r)return"// Error: ___dup requires exactly 1 argument";let i=B(r,t,n),o=((a=r.$)==null?void 0:a.type)??((s=e.$)==null?void 0:s.type);return o?Pa(i,o,n):i}function Fm(e,t,n){var a,s;let r=e.args[0];if(!r)return"// Error: ___drop requires exactly 1 argument";let i=B(r,t,n),o=((a=r.$)==null?void 0:a.type)??((s=e.$)==null?void 0:s.type);return o?eo(i,o,n):""}function Lm(e,t,n){let r=e.args[0];return r?`__yo_decr_rc((void*)(${B(r,t,n)}).data)`:"// Error: __yo_dyn_drop requires exactly 1 argument"}function Am(e,t,n){let r=e.args[0];return r?`__yo_incr_rc((void*)(${B(r,t,n)}).data)`:"// Error: __yo_dyn_dup requires exactly 1 argument"}function Im(e,t,n){let r=e.args[0];return r?`__yo_incr_rc_atomic(${B(r,t,n)})`:"// Error: __yo_incr_rc_atomic requires exactly 1 argument"}function Sm(e,t,n){let r=e.args[0];return r?`__yo_decr_rc_atomic(${B(r,t,n)})`:"// Error: __yo_decr_rc_atomic requires exactly 1 argument"}function Nm(e,t,n){var o,a,s;let r=e.args[0];if(!r)return"// Error: __yo_sometype_drop requires exactly 1 argument";let i=(o=r.$)==null?void 0:o.type;if(i&&z(i)&&rt(i)){let l=B(r,t,n);return`if (${l} != NULL) { __yo_decr_rc((void*)${l}); }`}if(i&&z(i)&&i.resolvedConcreteType){let u=(a=i.resolvedConcreteType.trait)==null?void 0:a.fields.find(c=>c.label===F.___drop[0]);if(u&&u.assignedValue&&$e(u.assignedValue)){let c=(s=n.functions[u.assignedValue.funcId])==null?void 0:s.cName;if(c){let f=B(r,t,n);return`${c}(${f})`}}}return"/* __yo_sometype_drop: no-op */"}function xm(e,t,n){var o,a,s;let r=e.args[0];if(!r)return"// Error: __yo_sometype_dup requires exactly 1 argument";let i=(o=r.$)==null?void 0:o.type;if(i&&z(i)&&rt(i))return`__yo_incr_rc((void*)${B(r,t,n)})`;if(i&&z(i)&&i.resolvedConcreteType){let u=(a=i.resolvedConcreteType.trait)==null?void 0:a.fields.find(c=>c.label===F.___dup[0]);if(u&&u.assignedValue&&$e(u.assignedValue)){let c=(s=n.functions[u.assignedValue.funcId])==null?void 0:s.cName;if(c){let f=B(r,t,n);return`${c}(${f})`}}}return"/* __yo_sometype_dup: no-op */"}function Vm(e,t,n){var a;if(e.args.length!==1)return"// Error: rc requires exactly 1 argument";let r=e.args[0],i=(a=r.$)==null?void 0:a.type;if(!i)return"// Error: rc argument missing type information";let o=B(r,t,n);return pr(i)?`((yo_ref_header_t*)(${o}))->ref_count`:"1"}var Dm=j(()=>{Gt();ce();Ae();ge();zt();vr();fn()});function Mm(e,t,n){var i;let r=(i=e.$)==null?void 0:i.runtimeArgExprsInOrder;if(r){let o=n,a=r.map(s=>{var u,c;let l=B(s,t,n);if((u=s.$)!=null&&u.deferredDupExpressions&&s.$.deferredDupExpressions.length>0){jt(s,t,o);let f=s.$.deferredDupExpressions[0];if(S(f)&&((c=f.$)!=null&&c.variableName))return et(f.$.variableName,f.$.env)}return l}).join(", ");return`${n.currentFunctionName}(${a})`}else return`// Error: No arguments for recur call ${L(e)}
10660
+ `}var Om=j(()=>{ce();zt();vr();fn()});function Rm(e,t,n){let r=e.args[0];return`sizeof(${B(r,t,n)})`}var Pm=j(()=>{fn()});function Um(e,t,n){var a,s,l,u,c,f,p,_,d;let r=(a=e.$)==null?void 0:a.runtimeArgExprsInOrder,i=(u=n.types[((l=(s=e.$)==null?void 0:s.type)==null?void 0:l.id)??""])==null?void 0:u.cName,o=(c=e.$)==null?void 0:c.variableName;if(r&&i){let g=n,y=r.map((h,v)=>{var C,w;let $=B(h,t,n);if((C=h.$)!=null&&C.deferredDupExpressions&&h.$.deferredDupExpressions.length>0){jt(h,t,g);let k=h.$.deferredDupExpressions[0];S(k)&&((w=k.$)!=null&&w.variableName)&&($=et(k.$.variableName,k.$.env))}return`._${v} = ${$}`}).join(", ");if(o&&((f=e.$)!=null&&f.type)){let h=`(${i}){ ${y} }`,v=Jt(e.$.type,o,n);return n.emitter.emitLine(`${t}${v} = ${h};`),o}else return`(${i}){ ${y} }`}else{if(e.args.length===0)return"";{let g=r??e.args;if(!i)return`/* Error: tuple type not found - typeId: ${((_=(p=e.$)==null?void 0:p.type)==null?void 0:_.id)??"none"} */`;let y=g.map((h,v)=>{let E=B(h,t,n);return`._${v} = ${E}`}).join(", ");if(o&&((d=e.$)!=null&&d.type)){let h=`(${i}){ ${y} }`,v=Jt(e.$.type,o,n);return n.emitter.emitLine(`${t}${v} = ${h};`),o}else return`(${i}){ ${y} }`}}}var zm=j(()=>{ce();zt();vr();fn()});function Bm(e,t,n){var u,c;let i=(u=e.args[0].$)==null?void 0:u.value;if(!i||!Y(i))throw new Error("typeid codegen: expected TypeValue argument");let o=i.value,a=o.id,s=((c=n.types[a])==null?void 0:c.cName)||q(o,n),l=`yo_typeid_${ve(s)}`;return n.typeIdStatics||(n.typeIdStatics=new Map),n.typeIdStatics.has(a)||(n.typeIdStatics.set(a,l),n.emitter.emitDeclarationLine(`static const char ${l} = 0;`)),n.cIncludes.add("<stdint.h>"),`(uintptr_t)&${l}`}var Gm=j(()=>{ge();zt()});function B$(e,t){if(S(e)&&T(e,D.begin)){let n=[];for(let r of e.args)if(S(r)&&T(r,"=",2)){let i=r.args[0],o=r.args[1],a=B(i,"",t),s=B(o,"",t);n.push(`${a} = ${s}`)}return n.join(", ")}else if(S(e)&&T(e,"=",2)){let n=e.args[0],r=e.args[1],i=B(n,"",t),o=B(r,"",t);return`${i} = ${o}`}return B(e,"",t)}function Wm(e,t,n){var r,i,o,a;if(S(e)&&T(e,D.begin)){let s=n,l=s.pendingDeferredDrops,u=((r=e.$)==null?void 0:r.deferredDropExpressions)??[],c=new Map;for(let d of u){let g=Yr(d);g&&c.set(g,d)}s.pendingDeferredDrops=[...l??[]];let f=s.consumedVarPendingDrops,p=((i=e.$)==null?void 0:i.consumedVariableDropExpressions)??[];s.consumedVarPendingDrops=[...p,...f??[]];let _=new Set;for(let d of e.args){let g=B(d,t,n);if(g&&n.emitter.emitLine(`${t}${g};`),(o=d.$)!=null&&o.env&&c.size>_.size)for(let y of d.$.env.frames)for(let h of y.variables)c.has(h.name)&&!_.has(h.name)&&(_.add(h.name),s.pendingDeferredDrops.unshift(c.get(h.name)))}if((a=e.$)!=null&&a.deferredDropExpressions)for(let d of e.$.deferredDropExpressions){let g=B(d,t,n);g&&n.emitter.emitLine(`${t}${g};`)}s.pendingDeferredDrops=l,s.consumedVarPendingDrops=f}else{let s=B(e,t,n);s&&n.emitter.emitLine(`${t}${s};`)}}function Ym(e,t,n){var i,o;let r=e.args;if(r.length===2){let a=r[0],s=r[1],l=n.currentLoopLabel,u=`loop_${Math.random().toString(36).substr(2,9)}`;n.currentLoopLabel=u;let c=n,f=c.loopBodyDropsBaselineCount;c.loopBodyDropsBaselineCount=((i=c.pendingDeferredDrops)==null?void 0:i.length)??0,n.emitter.emitLine(`${t}while (true) {`);let p=B(a,t+" ",n);return n.emitter.emitLine(`${t} if (!(${p})) {`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t} }`),Wm(s,t+" ",n),n.emitter.emitLine(`${t}}`),n.emitter.emitLine(`${t}${u}:;`),c.loopBodyDropsBaselineCount=f,n.currentLoopLabel=l,""}else if(r.length===3){let a=r[0],s=r[1],l=r[2],u=n.currentLoopLabel,c=n.currentContinueLabel,f=`loop_${Math.random().toString(36).substr(2,9)}`,p=`continue_${Math.random().toString(36).substr(2,9)}`;n.currentLoopLabel=f,n.currentContinueLabel=p;let _=n,d=_.loopBodyDropsBaselineCount;_.loopBodyDropsBaselineCount=((o=_.pendingDeferredDrops)==null?void 0:o.length)??0,n.emitter.emitLine(`${t}while (true) {`);let g=B(a,t+" ",n);n.emitter.emitLine(`${t} if (!(${g})) {`),n.emitter.emitLine(`${t} break;`),n.emitter.emitLine(`${t} }`),Wm(l,t+" ",n),n.emitter.emitLine(`${t}${p}:;`);let y=B$(s,n);return n.emitter.emitLine(`${t} ${y};`),n.emitter.emitLine(`${t}}`),n.emitter.emitLine(`${t}${f}:;`),_.loopBodyDropsBaselineCount=d,n.currentLoopLabel=u,n.currentContinueLabel=c,""}else return n.emitter.emitLine(`${t}/* Error: while loop expects 2 or 3 arguments, got ${r.length} */`),""}var qm=j(()=>{ce();zt();fn()});function G$(e){let t=[];for(let n of e)if(n.isEffectRowSpread){let r=n.type;z(r)&&r.resolvedConcreteType&&(r=r.resolvedConcreteType),Xt(r)&&t.push(...r.implicitParameters)}else t.push(n);return t}function W$(e,t,n,r){var f,p,_,d;let i=e.args[0];if(!((f=i==null?void 0:i.$)!=null&&f.type))return;let o=e.args.find(g=>S(g)&&T(g,D.using));if(!o)return;let a=Un(i.$.type);if(!((p=a==null?void 0:a.isFuture.effects)!=null&&p.length))return;let s=G$(a.isFuture.effects),l=o.args,u=r,c=u.emitter;for(let g=0;g<s.length&&g<l.length;g++){let y=s[g],h=l[g];if(te(y.type)){let v=y.label,E;if(u.currentEvidenceParams){for(let $ of u.currentEvidenceParams.values())if($.fieldLabel===v){E=$.cParamName;break}}if(!E&&u.stateMachineVariables){for(let[,$]of u.stateMachineVariables)if($.name===v&&$.kind==="outer"){E=`sm->__capture.${v}`;break}}if(!E){let $=(_=h.$)==null?void 0:_.value;if($&&$e($)){let C=r.functions[$.funcId];C&&(E=C.cName)}}E||(E=B(h,n,r)),E&&c.emitLine(`${n} ${t}->__capture.${v} = (void*)${E};`)}else if(Qe(y.type)){let v=y.type;for(let E of v.fields){if(!te(E.type))continue;let $;if(u.stateMachineVariables){for(let[,C]of u.stateMachineVariables)if(C.name===E.label&&C.kind==="outer"){$=`sm->__capture.${E.label}`;break}}if(!$){let C=(d=h.$)==null?void 0:d.value;if(C&&At(C)){let w=v.fields.indexOf(E),k=C.fields[w];if(k&&$e(k)){let b=r.functions[k.funcId];b&&($=b.cName)}}}if(!$&&u.currentEvidenceParams){for(let C of u.currentEvidenceParams.values())if(C.fieldLabel===E.label){$=C.cParamName;break}}$||($=Y$(E.label,v,u,e)),$&&c.emitLine(`${n} ${t}->__capture.${E.label} = (void*)${$};`)}}}}function Y$(e,t,n,r){var a,s,l,u;let i=((a=r.$)==null?void 0:a.env)??((s=r.func.$)==null?void 0:s.env);if(!i)return;let o=hr(i,c=>c.isImplicit===!0);for(let c=o.length-1;c>=0;c--){let f=o[c],p=(l=f.value)==null?void 0:l[f.value.length-1];if(p&&At(p)){let _=p.type.fields.findIndex(d=>d.label===e);if(_>=0){let d=p.fields[_];if(d&&$e(d)){let g=(u=n.functions[d.funcId])==null?void 0:u.cName;if(g)return g}}}}}function q$(e,t,n){var l,u;let r=n,i=e.args[0],o=(l=r.continuationVariables)==null?void 0:l.get("resume");if(o&&"directReturnVar"in o&&o.directExitLabel){if(i){let c=B(i,t,n);if(r.effectHandlerParamDrops)for(let f of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${f};`);r.emitter.emitLine(`${t}${o.directReturnVar} = ${c};`),r.emitter.emitLine(`${t}goto ${o.directExitLabel};`)}else{if(r.effectHandlerParamDrops)for(let c of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${c};`);r.emitter.emitLine(`${t}goto ${o.directExitLabel};`)}return""}if(r.inAsyncStateMachine){let c=r.emitter;if(i){let f=B(i,t,n);f&&f!=="(void)0"&&c.emitLine(`${t}(void)${f};`)}if(r.effectHandlerParamDrops)for(let f of r.effectHandlerParamDrops)c.emitLine(`${t}${f};`);return Tr(t,r,e,!1,!0,!0),$i(t,r,e,!0),ei({emitter:c,indent:t,debugLabel:r.currentFunctionName}),""}if((r.isModuleEffectMemberFunction||r.currentEvidenceParams&&r.currentEvidenceParams.size>0)&&r.emitter.emitLine(`${t}__yo_effect_escaped = 1;`),!i){if(r.effectHandlerParamDrops)for(let c of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${c};`);if(Tr(t,r,e,!1,!0,!0),$i(t,r,e,!0),r.currentFunctionType){let c=r.currentFunctionType.return.type;if(!Pe(c)){let f=r.overrideReturnTypeStr??q(c,n);if(f!=="void")return`return (${f}){0}`}}return"return"}let s=B(i,t,n);if(r.effectHandlerParamDrops)for(let c of r.effectHandlerParamDrops)r.emitter.emitLine(`${t}${c};`);if(Tr(t,r,e,!1,!0,!0),$i(t,r,e,!0),(r.isModuleEffectMemberFunction||r.currentEvidenceParams&&r.currentEvidenceParams.size>0)&&r.currentFunctionType){let c=(u=i.$)==null?void 0:u.type;if(c&&!Pe(c)){let p=q(c,n);r.emitter.emitLine(`${t}{ ${p} _esc_val = ${s}; memcpy(__yo_effect_escape_value, &_esc_val, sizeof(${p})); }`)}let f=r.currentFunctionType.return.type;if(!Pe(f)){let p=r.overrideReturnTypeStr??q(f,n);if(p!=="void")return`return (${p}){0}`}return"return"}return`return ${s}`}function Hm(e,t,n){let r;switch(e.tag){case"FnCall":r=H$(e,t,n);break;case"Atom":r=Ha(e,n,t);break}return r}function H$(e,t,n){var r,i,o,a,s,l,u,c,f,p,_,d,g;if((r=e.$)!=null&&r.macroExpansion)return B(e.$.macroExpansion,t,n);if(S(e.func)&&T(e.func,".",2)&&e.func.args[1]&&H(e.func.args[1])){let y=e.func.args[1].token.value,h=e.func.args[0],v=(i=h==null?void 0:h.$)==null?void 0:i.type;if(v&&z(v)&&rt(v)){if(y===F.___drop[0]){let E=B(h,t,n);return`if (${E} != NULL) { __yo_decr_rc((void*)${E}); }`}if(y===F.___dup[0])return`__yo_incr_rc((void*)${B(h,t,n)})`}}if(k_(e))return w_(e,t,n);if(T(e,F.__yo_decr_rc))return vm(e,t,n);if(T(e,F.__yo_incr_rc))return Tm(e,t,n);if(T(e,F.__yo_rc_own))return Em(e,t,n);if(T(e,F.__yo_drop_array_element))return $m(e,t,n);if(T(e,F.__yo_dup_array_element))return bm(e,t,n);if(T(e,F.__yo_drop_tuple_element))return Cm(e,t,n);if(T(e,F.__yo_dup_tuple_element))return km(e,t,n);if(T(e,F.___dup))return wm(e,t,n);if(T(e,F.___drop))return Fm(e,t,n);if(T(e,F.__yo_dyn_drop))return Lm(e,t,n);if(T(e,F.__yo_dyn_dup))return Am(e,t,n);if(T(e,F.__yo_incr_rc_atomic))return Im(e,t,n);if(T(e,F.__yo_decr_rc_atomic))return Sm(e,t,n);if(T(e,F.__yo_iso_extract))return Xd(e,t,n);if(T(e,F.__yo_iso_dispose))return Qd(e,t,n);if(T(e,F.__yo_arc_dispose))return Td(e,t,n);if(lf(e))return Zd(e,t,n);if(af(e))return Ed(e,t,n);if(T(e,F.__yo_sometype_drop))return Nm(e,t,n);if(T(e,F.__yo_sometype_dup))return xm(e,t,n);if(T(e,F.__yo_gc_collect))return qd(e,t,n);if(T(e,F.rc))return Vm(e,t,n);if(T(e,F.panic))return _m(e,t,n);if(T(e,D.test))return"/* test declaration skipped */";if(T(e,F.__yo_thread_set_maximum_threads))return sm(e,t,n);if(T(e,D.op_and))return gd(e,t,n);if(T(e,D.op_or))return hd(e,t,n);if(qn(e))return(o=e.$)!=null&&o.awaitAnalysis?F_(e,t,n):N_(e,t,n);if(T(e,D.dyn))return Wd(e,t,n);if(Nr(e))return Ad(e,t,n);if(l_(e))return Id(e,t,n);if(u_(e)){let y=e.args[0];if(!y)return"// Error: spawn requires a Future argument";let v=n.emitter,E=B(y,t,n),$=(a=y.$)==null?void 0:a.type,C=$?q($,n):"void*",w=(s=e.$)==null?void 0:s.type,k=w?q(w,n):null,b=(l=e.$)!=null&&l.variableName?`__spawn_future_${e.$.variableName}`:"__spawn_future",A=(u=e.$)!=null&&u.variableName?`__spawn_state_${e.$.variableName}`:"__spawn_state";return v.emitLine(`${t}// io.spawn \u2014 start cold Future, return JoinHandle`),v.emitLine(`${t}${C} ${b} = ${E};`),v.emitLine(`${t}int ${A} = ${b}->state;`),v.emitLine(`${t}if (${A} == -2) {`),v.emitLine(`${t} fprintf(stderr, "panic: attempted to spawn an aborted Future\\n");`),v.emitLine(`${t} abort();`),v.emitLine(`${t}}`),qs((c=y.$)==null?void 0:c.type)||(v.emitLine(`${t}if (${A} == 0 && ${b}->__yo_resume_fn) {`),W$(e,b,t,n),v.emitLine(`${t} __yo_incr_rc((void*)${b});`),v.emitLine(`${t} ${b}->__yo_resume_fn((void*)${b});`),v.emitLine(`${t}}`)),k?`(${k}){ .__future = (void*)${b} }`:`(void*)${b}`}if(c_(e))return Sd(e,t,n);if(T(e,D.return))return J_(e,t,n);if(T(e,D.escape))return q$(e,t,n);if(T(e,F.__yo_array_fill,2))return Cd(e,t,n);if(T(e,"::",2))return"";if(T(e,":",2))return Md(e,t,n);if(T(e,":=",2)){let y=jd(e,t,n);if(y!==void 0)return y}else{if(T(e,"=",2))return wd(e,t,n);if((f=e.$)!=null&&f.value&&!Ge((p=e.$)==null?void 0:p.value)&&!Pe(e.$.type)&&!cn((_=e.$)==null?void 0:_.controlFlow)){let y=e.$.value;return Jn(y,n,e)}else{if(T(e,".",2))return mm(e,t,n);if(T(e,D.begin))return Vd(e,t,n);if(T(e,D.cond))return Rd(e,t,n);if(T(e,D.match))return tm(e,t,n);if(T(e,F.__yo_address_of,1))return gm(e,t,n);if(T(e,D.tuple))return Um(e,t,n);if(T(e,D.array)){let y=bd(e,t,n);if(y!==void 0)return y}else{if(T(e,D.recur))return Mm(e,t,n);if(T(e,D.runtime,1))return B(e.args[0],t,n);if(T(e,F.sizeof,1))return Rm(e,t,n);if(T(e,F.typeid,1))return Bm(e,t,n);if(T(e,F.downcast,2))return Bd(e,t,n);if(T(e,ta)){let y=((d=e.$)==null?void 0:d.runtimeArgExprsInOrder)||e.args;if(y){let h=n,v=y.map(E=>{var C,w;let $=B(E,t,n);if((C=E.$)!=null&&C.deferredDupExpressions&&E.$.deferredDupExpressions.length>0){jt(E,t,h);let k=E.$.deferredDupExpressions[0];if(S(k)&&((w=k.$)!=null&&w.variableName))return et(k.$.variableName,k.$.env)}return $});return Xs(e.func.token.value,v,e,n,t)}}else{if(T(e,D.while))return Ym(e,t,n);if(T(e,"->",2)&&S(e.args[0])&&T(e.args[0],D.fn)){let y=(g=e.$)==null?void 0:g.value;return $e(y)?Jn(y,n):"// Error: Anonymous function missing function value"}else{if(T(e,F.consume))return Ud(e,t,n);if(T(e,F.comptime_expect_error)||T(e,F.comptime_assert)||T(e,F.__yo_var_print_info)||T(e,F.__yo_var_is_owning_the_rc_value)||T(e,F.__yo_var_has_other_aliases))return"";if(T(e,D.open))return rm(e,t,n);{let y=fm(e,t,n);if(y!==void 0)return y}}}}}}if(S(e))throw new Error(`Unhandled function call: ${L(e)}`);return`// Failed to transpile ${L(e)}`}var jm=j(()=>{Jr();Gt();ce();Ae();ge();ft();Cu();zs();zt();vd();$d();kd();Fd();Kc();ea();ku();xd();Dd();Od();Hs();Ua();Pd();zd();Gd();vr();Yd();fn();Hd();Kd();sf();Jd();nm();im();pm();dm();cf();ym();hm();Dm();Om();Ks();Pm();zm();Gm();qm()});function Km({expr:e,env:t,context:n}){He(e,F.alignof,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:"Failed to evaluate expression."});t=i.$.env;let o;i.$.value&&Y(i.$.value)?o=i.$.value.value:o=i.$.type;let a=hi(o),s;return a===null?s=oe(_n(),{env:t,context:n}):s=Xn("Usize",a),e.$={env:t,type:_n(),value:s,pathCollection:[]},e}var Xm=j(()=>{xe();ce();dt();Je();ge();_r();Ke()});function Qm({expr:e,env:t,context:n}){let r=T(e,D.op_and)?"and":"or",i=e.args;if(i.length===0){let u=on(r==="and");return e.$={env:t,type:Bt(),value:u,pathCollection:[],isAccessingProperty:!1},e}let o=t,a,s=!1,l=!1;for(let u=0;u<i.length;u++){let c=i[u],f=R({expr:c,env:o,context:{...n}});if(!f.$||!Lr(f.$.type))throw m({token:c.token,errorMessage:`Expected bool type for "${r}" argument, got:
10661
10661
  ${L(c)}`});o=f.$.env;let p=f.$.value;if(Ge(p)){s=!0;continue}if(Lt(p)){let _=p.value;if(r==="and"){if(!_){a=on(!1);break}!s&&!l&&(a=on(!0))}else{if(_){a=on(!0);break}!s&&!l&&(a=on(!1))}}else l=!0}return Lt(a)||(l||s)&&(l?a=void 0:a=oe(Bt(),{env:o,context:n})),e.$={env:o,type:Bt(),value:a,pathCollection:[],isAccessingProperty:!1},e}var Zm=j(()=>{xe();ce();dt();Ae();ge();Ke()});function Jm({expr:e,env:t,context:n}){var g,y,h,v,E;He(e,F.__yo_array_fill,2);let r=e.args[0],i=e.args[1],o=R({expr:r,env:t,context:{...n}});(g=o.$)!=null&&g.env&&(t=o.$.env);let a=(y=o.$)==null?void 0:y.value;if(!Y(a)||!at(a.value))throw m({token:r.token,errorMessage:`__yo_array_fill expects first argument to be an ArrayType, got ${a?vt(a):"undefined"}`});let s=a.value,l=R({expr:i,env:t,context:{...n,expectedType:{type:s.childType,env:t}}});(h=l.$)!=null&&h.env&&(t=l.$.env);let u=(v=l.$)==null?void 0:v.type,c=(E=l.$)==null?void 0:E.value;if(!u)throw m({token:i.token,errorMessage:"Failed to evaluate fill value"});if(!c)throw m({token:i.token,errorMessage:"__yo_array_fill expects second argument to be a compile-time known value, got runtime value"});if(!ie({type:s.childType,env:t},{type:u,env:t}))throw m({token:i.token,errorMessage:`Fill value type ${x(u)} is not compatible with array element type ${x(s.childType)}`});let f=s.length;if(Ge(f)){let $=oe(s,{env:t,context:n});return e.$={env:t,type:s,value:$,pathCollection:[]},e}let p;if(wt(f)){let $=f.value;if(p=typeof $=="bigint"?Number($):$,!Number.isInteger(p)||p<0)throw m({token:i.token,errorMessage:`Array length must be a non-negative integer, got ${p}`})}else throw m({token:i.token,errorMessage:`Array length must be a compile-time known integer, got ${vt(f)}`});let _=[];if(Ge(c)){let $=oe(s,{env:t,context:n});return e.$={env:t,type:s,value:$,pathCollection:[]},e}for(let $=0;$<p;$++)_.push(c);let d=mo(s,_);return e.$={env:t,type:s,value:d,pathCollection:[]},e}var ey=j(()=>{xe();ce();Qt();Ae();Je();ge();Ke()});function ty({expr:e,env:t,context:n}){var s,l,u;if(n.isValidatingFunctionDefinition||!n.isExecuting){let c=((s=n.expectedType)==null?void 0:s.type)??se.type;return e.$={env:t,type:c,value:Pe(c)?se:oe(c,{env:t,context:n}),pathCollection:[]},e}let r=e.args[0],i=e.args[1],o=R({expr:r,env:t,context:{...n}});if(!o.$||!Lt(o.$.value))throw m({token:r.token,errorMessage:`Expected bool value for "comptime_assert", got:
10662
10662
  ${L(r)}
10663
10663
 
@@ -10667,36 +10667,36 @@ ${L(r)}`,isAssertionError:!0})}var ny=j(()=>{xe();ce();Ae();xn();ge();Ke()});fun
10667
10667
  ${L(r)}`});t=r.$.env;let i;if(T(e,F.__yo_comptime_bool_not))Lt(r.$.value)?i=on(!r.$.value.value):i=oe(Bt(),{env:t,context:n});else if(T(e,F.__yo_comptime_bool_to_comptime_string))Lt(r.$.value)?i=lr(r.$.value.value.toString()):i=oe(Pn(),{env:t,context:n});else throw m({token:e.token,errorMessage:`Unexpected function call for "${e.func.token.value}", expected "__yo_comptime_bool_not" or "__yo_comptime_bool_to_comptime_string" function`});e.$={env:t,type:i.type,value:i,pathCollection:[]}}else{let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$||!Lr(r.$.type)||!r.$.value)throw m({token:r.token,errorMessage:`Expected bool type for "${e.func.token.value}" first argument, got:
10668
10668
  ${L(r)}`});t=r.$.env;let i=R({expr:e.args[1],env:t,context:{...n}});if(!i.$||!Lr(i.$.type)||!i.$.value)throw m({token:i.token,errorMessage:`Expected bool type for "${e.func.token.value}" second argument, got:
10669
10669
  ${L(i)}`});t=i.$.env;let o=r.$.value,a=i.$.value,s;if(T(e,F.__yo_comptime_bool_and))Lt(o)&&Lt(a)?s=on(o.value&&a.value):s=oe(Bt(),{env:t,context:n});else if(T(e,F.__yo_comptime_bool_or))Lt(o)&&Lt(a)?s=on(o.value||a.value):s=oe(Bt(),{env:t,context:n});else if(T(e,F.__yo_comptime_bool_eq))Lt(o)&&Lt(a)?s=on(o.value===a.value):s=oe(Bt(),{env:t,context:n});else if(T(e,F.__yo_comptime_bool_neq))Lt(o)&&Lt(a)?s=on(o.value!==a.value):s=oe(Bt(),{env:t,context:n});else throw m({token:e.token,errorMessage:`Unexpected function call for comptime_bool operations: ${L(e)}`});e.$={env:t,type:s.type,value:s,pathCollection:[]}}return e}var iy=j(()=>{xe();ce();dt();Ae();ge();Ke()});function oy({expr:e,env:t,context:n}){var o;let r=mt(e.args[0]),i=e.args[1]?mt(e.args[1]):void 0;try{R({expr:r,env:t,context:{...n}})}catch{return e.$={env:t,type:se.type,value:se,pathCollection:[]},e}if(i){let a=R({expr:i,env:t,context:{...n}});if((o=a.$)!=null&&o.value)throw m({token:e.token,errorMessage:St(a.$.value)?a.$.value.value:vt(a.$.value)})}throw m({token:e.token,errorMessage:`Expected compile error, but the expression was evaluated successfully:
10670
- ${L(r)}`})}var ay=j(()=>{xe();ce();xn();ge();Ke()});function j$(e){return{...e,forallParameters:e.forallParameters.map(t=>({...t,isCompileTimeOnly:!0})),parameters:e.parameters.map(t=>({...t,isCompileTimeOnly:!0})),return:{...e.return,isCompileTimeOnly:!0}}}function ja(e,t,n){var i;if(e.type.return.isCompileTimeOnly||e.type.isExtern||e.type.forallParameters.length>0)return;for(let o of e.type.parameters)if(Ii(o.type,t))return;if(Ii(e.type.return.type,t))return;let r=j$(e.type);try{let o=mt(e.body),a=Ct(r.env);for(let u of r.parameters){let{env:c}=Be({env:a,variable:{name:u.label,type:u.type,isCompileTimeOnly:!0,value:[oe(u.type,{variableName:u.label,env:a,context:n})],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});a=c}let s={tag:"Function",type:r,body:o,frameLevel:e.frameLevel,funcName:e.funcName?`${e.funcName}_comptime`:void 0,funcId:`${e.funcId}_comptime`,definitionSiteEnclosingFunctionType:e.definitionSiteEnclosingFunctionType,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},l=gn({expr:o,env:a,context:{...n,isExecuting:!0,forceCompileTimeBindings:!0,isAnalyzingCtfeCapability:!0,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:r,value:s,evaluationEnv:a},expectedType:{type:r.return.type,env:a}},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0});if(((i=l.$)==null?void 0:i.value)!==void 0)return s.body=l,nn(a,!0),s;nn(a,!0);return}catch{return}}var Lu=j(()=>{ft();ce();pn();Je();ge();_r();fi()});function sy({expr:e,env:t,context:n}){let r=e.args[0];if(!r)throw m({token:e.token,errorMessage:"comptime_fn requires exactly one argument (a function)"});let i=R({expr:r,env:t,context:n});if(!i.$)throw m({token:r.token,errorMessage:"Failed to evaluate argument to comptime_fn"});let o=i.$.value;if(!$e(o))throw m({token:r.token,errorMessage:`comptime_fn requires a function argument, got: ${vt(o)}`});if(o.type.return.isCompileTimeOnly)return e.$={env:t,type:o.type,value:o,pathCollection:[]},e;let a=ja(o,t,n);if(a)return e.$={env:t,type:a.type,value:a,pathCollection:[]},e;throw m({token:r.token,errorMessage:"comptime_fn: Failed to create compile-time version of function. The function body cannot be evaluated at compile time."})}var ly=j(()=>{xe();ge();Lu();Ke()});function uy({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_car,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10670
+ ${L(r)}`})}var ay=j(()=>{xe();ce();xn();ge();Ke()});function j$(e){return{...e,forallParameters:e.forallParameters.map(t=>({...t,isCompileTimeOnly:!0})),parameters:e.parameters.map(t=>({...t,isCompileTimeOnly:!0})),return:{...e.return,isCompileTimeOnly:!0}}}function ja(e,t,n){var i;if(e.type.return.isCompileTimeOnly||e.type.isExtern||e.type.forallParameters.length>0)return;for(let o of e.type.parameters)if(Si(o.type,t))return;if(Si(e.type.return.type,t))return;let r=j$(e.type);try{let o=mt(e.body),a=Ct(r.env);for(let u of r.parameters){let{env:c}=Be({env:a,variable:{name:u.label,type:u.type,isCompileTimeOnly:!0,value:[oe(u.type,{variableName:u.label,env:a,context:n})],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});a=c}let s={tag:"Function",type:r,body:o,frameLevel:e.frameLevel,funcName:e.funcName?`${e.funcName}_comptime`:void 0,funcId:`${e.funcId}_comptime`,definitionSiteEnclosingFunctionType:e.definitionSiteEnclosingFunctionType,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},l=gn({expr:o,env:a,context:{...n,isExecuting:!0,forceCompileTimeBindings:!0,isAnalyzingCtfeCapability:!0,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:r,value:s,evaluationEnv:a},expectedType:{type:r.return.type,env:a}},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0});if(((i=l.$)==null?void 0:i.value)!==void 0)return s.body=l,nn(a,!0),s;nn(a,!0);return}catch{return}}var Lu=j(()=>{ft();ce();pn();Je();ge();_r();fi()});function sy({expr:e,env:t,context:n}){let r=e.args[0];if(!r)throw m({token:e.token,errorMessage:"comptime_fn requires exactly one argument (a function)"});let i=R({expr:r,env:t,context:n});if(!i.$)throw m({token:r.token,errorMessage:"Failed to evaluate argument to comptime_fn"});let o=i.$.value;if(!$e(o))throw m({token:r.token,errorMessage:`comptime_fn requires a function argument, got: ${vt(o)}`});if(o.type.return.isCompileTimeOnly)return e.$={env:t,type:o.type,value:o,pathCollection:[]},e;let a=ja(o,t,n);if(a)return e.$={env:t,type:a.type,value:a,pathCollection:[]},e;throw m({token:r.token,errorMessage:"comptime_fn: Failed to create compile-time version of function. The function body cannot be evaluated at compile time."})}var ly=j(()=>{xe();ge();Lu();Ke()});function uy({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_car,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10671
10671
  ${L(r)}`});if(!Rn(i.$.type))throw m({token:r.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" argument, got:
10672
10672
  ${L(r)}`});let o=i.$.type,a=i.$.value;if(!a)throw m({token:r.token,errorMessage:`Expected ComptimeList value for "${e.func.token.value}" argument, got:
10673
- ${L(r)}`});if(e.$={env:i.$.env,type:o.childType,value:oe(o.childType,{env:i.$.env,context:n}),pathCollection:[],isAccessingProperty:!1},wi(a)){let s=a.elements;if(s.length>0)e.$.value=s[0];else throw m({token:r.token,errorMessage:`Unexpected empty ComptimeList for "${e.func.token.value}" argument`})}return e}function cy({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_cdr,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10673
+ ${L(r)}`});if(e.$={env:i.$.env,type:o.childType,value:oe(o.childType,{env:i.$.env,context:n}),pathCollection:[],isAccessingProperty:!1},Fi(a)){let s=a.elements;if(s.length>0)e.$.value=s[0];else throw m({token:r.token,errorMessage:`Unexpected empty ComptimeList for "${e.func.token.value}" argument`})}return e}function cy({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_cdr,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10674
10674
  ${L(r)}`});if(!Rn(i.$.type))throw m({token:r.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" argument, got:
10675
10675
  ${L(r)}`});let o=i.$.type,a=i.$.value;if(!a)throw m({token:r.token,errorMessage:`Expected ComptimeList value for "${e.func.token.value}" argument, got:
10676
- ${L(r)}`});if(e.$={env:i.$.env,type:o,value:oe(o,{env:i.$.env,context:n}),pathCollection:[],isAccessingProperty:!1},wi(a)){let s=a.elements;if(s.length>0)e.$.value=ai(o.childType,[...s.slice(1)]);else throw m({token:r.token,errorMessage:`Unexpected empty ComptimeList for "${e.func.token.value}" argument`})}return e}function fy({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_cons,2);let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$)throw m({token:r.token,errorMessage:`Failed to evaluate the first argument expression for "${e.func.token.value}":
10676
+ ${L(r)}`});if(e.$={env:i.$.env,type:o,value:oe(o,{env:i.$.env,context:n}),pathCollection:[],isAccessingProperty:!1},Fi(a)){let s=a.elements;if(s.length>0)e.$.value=ai(o.childType,[...s.slice(1)]);else throw m({token:r.token,errorMessage:`Unexpected empty ComptimeList for "${e.func.token.value}" argument`})}return e}function fy({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_cons,2);let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$)throw m({token:r.token,errorMessage:`Failed to evaluate the first argument expression for "${e.func.token.value}":
10677
10677
  ${L(r)}`});t=r.$.env;let i=r.$.value;if(!i)throw m({token:r.token,errorMessage:`Expected Expr value for "${e.func.token.value}" first argument, got:
10678
10678
  ${L(r)}`});let o=R({expr:e.args[1],env:t,context:{...n}});if(!o.$)throw m({token:o.token,errorMessage:`Failed to evaluate the second argument expression for "${e.func.token.value}":
10679
10679
  ${L(o)}`});if(t=o.$.env,!Rn(o.$.type))throw m({token:o.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" second argument, got:
10680
10680
  ${L(o)}`});let a=o.$.value;if(!a)throw m({token:o.token,errorMessage:`Expected ComptimeList value for "${e.func.token.value}" second argument, got:
10681
- ${L(o)}`});let s=o.$.type,l=r.$.type;if(!ie({type:l,env:t},{type:s.childType,env:t}))throw m({token:r.token,errorMessage:`Type mismatch: cannot cons value of type "${x(l)}" to ComptimeList of base type "${x(s.childType)}" in "${e.func.token.value}"`});if(e.$={env:t,type:s,value:oe(s,{env:t,context:n}),pathCollection:[],isAccessingProperty:!1},wi(a)){let u=[i,...a.elements];e.$.value=ai(s.childType,u)}return e}function py({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_append,2);let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$)throw m({token:r.token,errorMessage:`Failed to evaluate the first argument expression for "${e.func.token.value}":
10681
+ ${L(o)}`});let s=o.$.type,l=r.$.type;if(!ie({type:l,env:t},{type:s.childType,env:t}))throw m({token:r.token,errorMessage:`Type mismatch: cannot cons value of type "${x(l)}" to ComptimeList of base type "${x(s.childType)}" in "${e.func.token.value}"`});if(e.$={env:t,type:s,value:oe(s,{env:t,context:n}),pathCollection:[],isAccessingProperty:!1},Fi(a)){let u=[i,...a.elements];e.$.value=ai(s.childType,u)}return e}function py({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_append,2);let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$)throw m({token:r.token,errorMessage:`Failed to evaluate the first argument expression for "${e.func.token.value}":
10682
10682
  ${L(r)}`});if(t=r.$.env,!Rn(r.$.type))throw m({token:r.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" first argument, got:
10683
10683
  ${L(r)}`});let i=r.$.value;if(!i)throw m({token:r.token,errorMessage:`Expected Expr value for "${e.func.token.value}" first argument, got:
10684
10684
  ${L(r)}`});let o=R({expr:e.args[1],env:t,context:{...n}});if(!o.$)throw m({token:o.token,errorMessage:`Failed to evaluate the second argument expression for "${e.func.token.value}":
10685
10685
  ${L(o)}`});if(t=o.$.env,!Rn(o.$.type))throw m({token:o.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" second argument, got:
10686
10686
  ${L(o)}`});let a=o.$.value;if(!a)throw m({token:o.token,errorMessage:`Expected ComptimeList value for "${e.func.token.value}" second argument, got:
10687
- ${L(o)}`});let s=r.$.type,l=o.$.type;if(!ie({type:s,env:t},{type:l,env:t}))throw m({token:e.token,errorMessage:`Type mismatch: cannot append ComptimeList of base type "${x(l.childType)}" to ComptimeList of base type "${x(s.childType)}" in "${e.func.token.value}"`});if(e.$={env:t,type:s,value:oe(s,{env:t,context:n}),pathCollection:[],isAccessingProperty:!1},wi(i)&&wi(a)){let u=[...i.elements,...a.elements];e.$.value=ai(s.childType,u)}return e}function _y({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_length,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10687
+ ${L(o)}`});let s=r.$.type,l=o.$.type;if(!ie({type:s,env:t},{type:l,env:t}))throw m({token:e.token,errorMessage:`Type mismatch: cannot append ComptimeList of base type "${x(l.childType)}" to ComptimeList of base type "${x(s.childType)}" in "${e.func.token.value}"`});if(e.$={env:t,type:s,value:oe(s,{env:t,context:n}),pathCollection:[],isAccessingProperty:!1},Fi(i)&&Fi(a)){let u=[...i.elements,...a.elements];e.$.value=ai(s.childType,u)}return e}function _y({expr:e,env:t,context:n}){He(e,F.__yo_comptime_list_length,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10688
10688
  ${L(r)}`});if(!Rn(i.$.type))throw m({token:r.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" argument, got:
10689
10689
  ${L(r)}`});let o=i.$.value;if(!o)throw m({token:r.token,errorMessage:`Expected ComptimeList value for "${e.func.token.value}" argument, got:
10690
- ${L(r)}`});if(e.$={env:i.$.env,type:_n(),value:oe(_n(),{env:i.$.env,context:n}),pathCollection:[],isAccessingProperty:!1},wi(o)){let a=o.elements.length,s=Xn("Usize",a);e.$.value=s}return e}function dy({expr:e,env:t,context:n}){var s;He(e,F.__yo_comptime_list_element_type,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10690
+ ${L(r)}`});if(e.$={env:i.$.env,type:_n(),value:oe(_n(),{env:i.$.env,context:n}),pathCollection:[],isAccessingProperty:!1},Fi(o)){let a=o.elements.length,s=Xn("Usize",a);e.$.value=s}return e}function dy({expr:e,env:t,context:n}){var s;He(e,F.__yo_comptime_list_element_type,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10691
10691
  ${L(r)}`});if(!Y((s=i.$)==null?void 0:s.value))throw m({token:r.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" argument, got:
10692
10692
  ${L(r)}`});let o=i.$.value.value;if(!Rn(o))throw m({token:r.token,errorMessage:`Expected ComptimeList type for "${e.func.token.value}" argument, got:
10693
- ${x(o)}`});let a=_e(o.childType);return e.$={env:i.$.env,type:a.type,value:a,pathCollection:[],isAccessingProperty:!1},e}var my=j(()=>{xe();ce();Qt();dt();Ae();Je();ge();_r();Ke()});function Iu(e){switch(e.tag){case"u8":return{min:0,max:255};case"i8":return{min:-128,max:127};case"u16":return{min:0,max:65535};case"i16":return{min:-32768,max:32767};case"u32":return{min:0,max:4294967295};case"i32":return{min:-2147483648,max:2147483647};case"u64":return{min:0n,max:18446744073709551615n};case"i64":return{min:-9223372036854775808n,max:9223372036854775807n};case"usize":{let t=qi();return{min:0n,max:(1n<<BigInt(t))-1n}}case"isize":{let t=qi();return{min:-(1n<<BigInt(t-1)),max:(1n<<BigInt(t-1))-1n}}case"comptime_int":return{min:-1/0,max:1/0};case"f32":case"f64":return;default:return}}function yy(e){switch(e.tag){case"u8":return"U8";case"i8":return"I8";case"u16":return"U16";case"i16":return"I16";case"u32":return"U32";case"i32":return"I32";case"u64":return"U64";case"i64":return"I64";case"usize":return"Usize";case"isize":return"Isize";case"f32":return"F32";case"f64":return"F64";default:return}}function Qs(e){return po(e)||_o(e)||dn(e)||On(e)||yi(e)||e.isExtern==="c"&&z(e)}function K$(e){let n=e.type.variants.find(r=>r.name===e.variantName);return n==null?void 0:n.discriminant}function X$(e){if(e&&wt(e))return e.value}function Q$(e){return Wr(e)||vl(e)||wt(e)}function Au(e,t,n){let r=Iu(t);if(r){let i=e,o=(s,l)=>{if(typeof s=="bigint"||typeof l=="bigint"){let u=typeof s=="bigint"?s:BigInt(Math.floor(s)),c=typeof l=="bigint"?l:BigInt(Math.floor(l));return u<c}return s<l},a=(s,l)=>{if(typeof s=="bigint"||typeof l=="bigint"){let u=typeof s=="bigint"?s:BigInt(Math.floor(s)),c=typeof l=="bigint"?l:BigInt(Math.floor(l));return u>c}return s>l};if(o(i,r.min)||a(i,r.max))throw m({token:n,errorMessage:`Value ${e} is out of range for type ${x(t)} (${r.min} to ${r.max})`})}if(dn(t)){let i=typeof e=="bigint"?e:BigInt(Math.floor(e));return Fi(i)}if(On(t)){let i=typeof e=="bigint"?Number(e):e;return Tl(i)}if(_o(t)){let i=yy(t);if(i){let o=typeof e=="bigint"?Number(e):e;return Xn(i,o)}}if(po(t)){let i=yy(t);if(i)if(i==="U64"||i==="I64"||i==="Usize"||i==="Isize"){let a=typeof e=="bigint"?e:BigInt(Math.floor(e));return Xn(i,a)}else{let a=typeof e=="bigint"?Number(e):Math.floor(e);return Xn(i,a)}}throw m({token:n,errorMessage:`Cannot create compile-time value for type ${x(t)}`})}function gy({targetType:e,argExpr:t,expr:n,callerEnv:r,context:i}){if(!Qs(e))return;let o=R({expr:t,env:r,context:{...i,expectedType:void 0}});if(!o.$)throw m({token:t.token,errorMessage:`Failed to evaluate argument: ${L(t)}`});let a=o.$.env,s=o.$.value,l=o.$.type;if(qe(l)&&Dn(s)){let c=K$(s);if(c===void 0)throw m({token:t.token,errorMessage:`Failed to get discriminant for enum variant "${s.variantName}"`});if(hi(e,a)){let f=Au(c,e,n.token);return n.$={env:a,type:e,value:f,pathCollection:[]},{expr:n,env:a}}}if(!Qs(l)&&!dn(l)&&!On(l)&&!qe(l))throw m({token:t.token,errorMessage:`Cannot convert ${x(l)} to ${x(e)}. Expected a numeric type.`});let u=X$(s);if(u!==void 0&&hi(e,a)){let c=Au(u,e,n.token);return n.$={env:a,type:e,value:c,pathCollection:[]},{expr:n,env:a}}if((dn(e)||On(e))&&u===void 0)throw m({token:t.token,errorMessage:`Cannot convert runtime value to ${x(e)}. Only compile-time values can be converted to ${x(e)}.`});if((dn(l)||On(l))&&hi(e,a))if(u!==void 0){let c=Au(u,e,n.token);return n.$={env:a,type:e,value:c,pathCollection:[]},{expr:n,env:a}}else return n.$={env:a,type:e,value:oe(e,{variableName:"comptime_conversion_placeholder",env:a,context:i}),pathCollection:[]},{expr:n,env:a};if(yi(e)||!Q$(s)){let c={tag:"FnCall",func:{tag:"Atom",token:{...n.token,value:F.__yo_as[0],type:"identifier"},$:void 0},args:[o,n.func],token:n.token,$:{env:a,type:e,value:void 0,pathCollection:o.$.pathCollection}};return wl(n,c),{expr:n,env:a}}if(u!==void 0){let c=Au(u,e,n.token);return n.$={env:a,type:e,value:c,pathCollection:[]},{expr:n,env:a}}throw m({token:n.token,errorMessage:"Unexpected case in numeric type conversion"})}var _f=j(()=>{xe();ce();pn();Ae();Mr();Je();ge();_r();Ke();Gt()});function Wn(e){return e&&(Wr(e)||vl(e)||wt(e))?e.value:null}function ko(e,t,n,r){if(t.tag==="comptime_int"){let a=typeof e=="bigint"?e:BigInt(Math.floor(e));return Fi(a)}if(t.tag==="comptime_float"){let a=typeof e=="bigint"?Number(e):e;return Tl(a)}if(yi(t))return oe(t,{env:n,context:r});let i=Z$(t),o=eb(e,t);return Xn(i,o)}function Z$(e){switch(e.tag){case"u8":return"U8";case"i8":return"I8";case"u16":return"U16";case"i16":return"I16";case"u32":return"U32";case"i32":return"I32";case"u64":return"U64";case"i64":return"I64";case"usize":return"Usize";case"isize":return"Isize";case"f32":return"F32";case"f64":return"F64";case"comptime_int":return"ComptimeFloat";case"comptime_float":return"ComptimeFloat";default:throw new Error(`Unsupported numeric type: ${e.tag}`)}}function df(e,t,n,r,i,o){let a=Iu(t);if(a===void 0||a.min===-1/0&&a.max===1/0)return;let s=(u,c)=>{if(typeof u=="bigint"||typeof c=="bigint"){let f=typeof u=="bigint"?u:BigInt(Math.floor(u)),p=typeof c=="bigint"?c:BigInt(Math.floor(c));return f<p}return u<c},l=(u,c)=>{if(typeof u=="bigint"||typeof c=="bigint"){let f=typeof u=="bigint"?u:BigInt(Math.floor(u)),p=typeof c=="bigint"?c:BigInt(Math.floor(c));return f>p}return u>c};if(s(e,a.min)||l(e,a.max))throw m({token:o,errorMessage:`Integer overflow in compile-time evaluation
10693
+ ${x(o)}`});let a=_e(o.childType);return e.$={env:i.$.env,type:a.type,value:a,pathCollection:[],isAccessingProperty:!1},e}var my=j(()=>{xe();ce();Qt();dt();Ae();Je();ge();_r();Ke()});function Iu(e){switch(e.tag){case"u8":return{min:0,max:255};case"i8":return{min:-128,max:127};case"u16":return{min:0,max:65535};case"i16":return{min:-32768,max:32767};case"u32":return{min:0,max:4294967295};case"i32":return{min:-2147483648,max:2147483647};case"u64":return{min:0n,max:18446744073709551615n};case"i64":return{min:-9223372036854775808n,max:9223372036854775807n};case"usize":{let t=qi();return{min:0n,max:(1n<<BigInt(t))-1n}}case"isize":{let t=qi();return{min:-(1n<<BigInt(t-1)),max:(1n<<BigInt(t-1))-1n}}case"comptime_int":return{min:-1/0,max:1/0};case"f32":case"f64":return;default:return}}function yy(e){switch(e.tag){case"u8":return"U8";case"i8":return"I8";case"u16":return"U16";case"i16":return"I16";case"u32":return"U32";case"i32":return"I32";case"u64":return"U64";case"i64":return"I64";case"usize":return"Usize";case"isize":return"Isize";case"f32":return"F32";case"f64":return"F64";default:return}}function Qs(e){return po(e)||_o(e)||dn(e)||On(e)||yi(e)||e.isExtern==="c"&&z(e)}function K$(e){let n=e.type.variants.find(r=>r.name===e.variantName);return n==null?void 0:n.discriminant}function X$(e){if(e&&wt(e))return e.value}function Q$(e){return Wr(e)||vl(e)||wt(e)}function Au(e,t,n){let r=Iu(t);if(r){let i=e,o=(s,l)=>{if(typeof s=="bigint"||typeof l=="bigint"){let u=typeof s=="bigint"?s:BigInt(Math.floor(s)),c=typeof l=="bigint"?l:BigInt(Math.floor(l));return u<c}return s<l},a=(s,l)=>{if(typeof s=="bigint"||typeof l=="bigint"){let u=typeof s=="bigint"?s:BigInt(Math.floor(s)),c=typeof l=="bigint"?l:BigInt(Math.floor(l));return u>c}return s>l};if(o(i,r.min)||a(i,r.max))throw m({token:n,errorMessage:`Value ${e} is out of range for type ${x(t)} (${r.min} to ${r.max})`})}if(dn(t)){let i=typeof e=="bigint"?e:BigInt(Math.floor(e));return Li(i)}if(On(t)){let i=typeof e=="bigint"?Number(e):e;return Tl(i)}if(_o(t)){let i=yy(t);if(i){let o=typeof e=="bigint"?Number(e):e;return Xn(i,o)}}if(po(t)){let i=yy(t);if(i)if(i==="U64"||i==="I64"||i==="Usize"||i==="Isize"){let a=typeof e=="bigint"?e:BigInt(Math.floor(e));return Xn(i,a)}else{let a=typeof e=="bigint"?Number(e):Math.floor(e);return Xn(i,a)}}throw m({token:n,errorMessage:`Cannot create compile-time value for type ${x(t)}`})}function gy({targetType:e,argExpr:t,expr:n,callerEnv:r,context:i}){if(!Qs(e))return;let o=R({expr:t,env:r,context:{...i,expectedType:void 0}});if(!o.$)throw m({token:t.token,errorMessage:`Failed to evaluate argument: ${L(t)}`});let a=o.$.env,s=o.$.value,l=o.$.type;if(qe(l)&&Dn(s)){let c=K$(s);if(c===void 0)throw m({token:t.token,errorMessage:`Failed to get discriminant for enum variant "${s.variantName}"`});if(vi(e,a)){let f=Au(c,e,n.token);return n.$={env:a,type:e,value:f,pathCollection:[]},{expr:n,env:a}}}if(!Qs(l)&&!dn(l)&&!On(l)&&!qe(l))throw m({token:t.token,errorMessage:`Cannot convert ${x(l)} to ${x(e)}. Expected a numeric type.`});let u=X$(s);if(u!==void 0&&vi(e,a)){let c=Au(u,e,n.token);return n.$={env:a,type:e,value:c,pathCollection:[]},{expr:n,env:a}}if((dn(e)||On(e))&&u===void 0)throw m({token:t.token,errorMessage:`Cannot convert runtime value to ${x(e)}. Only compile-time values can be converted to ${x(e)}.`});if((dn(l)||On(l))&&vi(e,a))if(u!==void 0){let c=Au(u,e,n.token);return n.$={env:a,type:e,value:c,pathCollection:[]},{expr:n,env:a}}else return n.$={env:a,type:e,value:oe(e,{variableName:"comptime_conversion_placeholder",env:a,context:i}),pathCollection:[]},{expr:n,env:a};if(yi(e)||!Q$(s)){let c={tag:"FnCall",func:{tag:"Atom",token:{...n.token,value:F.__yo_as[0],type:"identifier"},$:void 0},args:[o,n.func],token:n.token,$:{env:a,type:e,value:void 0,pathCollection:o.$.pathCollection}};return wl(n,c),{expr:n,env:a}}if(u!==void 0){let c=Au(u,e,n.token);return n.$={env:a,type:e,value:c,pathCollection:[]},{expr:n,env:a}}throw m({token:n.token,errorMessage:"Unexpected case in numeric type conversion"})}var _f=j(()=>{xe();ce();pn();Ae();Mr();Je();ge();_r();Ke();Gt()});function Wn(e){return e&&(Wr(e)||vl(e)||wt(e))?e.value:null}function ko(e,t,n,r){if(t.tag==="comptime_int"){let a=typeof e=="bigint"?e:BigInt(Math.floor(e));return Li(a)}if(t.tag==="comptime_float"){let a=typeof e=="bigint"?Number(e):e;return Tl(a)}if(yi(t))return oe(t,{env:n,context:r});let i=Z$(t),o=eb(e,t);return Xn(i,o)}function Z$(e){switch(e.tag){case"u8":return"U8";case"i8":return"I8";case"u16":return"U16";case"i16":return"I16";case"u32":return"U32";case"i32":return"I32";case"u64":return"U64";case"i64":return"I64";case"usize":return"Usize";case"isize":return"Isize";case"f32":return"F32";case"f64":return"F64";case"comptime_int":return"ComptimeFloat";case"comptime_float":return"ComptimeFloat";default:throw new Error(`Unsupported numeric type: ${e.tag}`)}}function df(e,t,n,r,i,o){let a=Iu(t);if(a===void 0||a.min===-1/0&&a.max===1/0)return;let s=(u,c)=>{if(typeof u=="bigint"||typeof c=="bigint"){let f=typeof u=="bigint"?u:BigInt(Math.floor(u)),p=typeof c=="bigint"?c:BigInt(Math.floor(c));return f<p}return u<c},l=(u,c)=>{if(typeof u=="bigint"||typeof c=="bigint"){let f=typeof u=="bigint"?u:BigInt(Math.floor(u)),p=typeof c=="bigint"?c:BigInt(Math.floor(c));return f>p}return u>c};if(s(e,a.min)||l(e,a.max))throw m({token:o,errorMessage:`Integer overflow in compile-time evaluation
10694
10694
  ${r} ${n==="multiply"?"*":n==="add"?"+":"-"} ${i} = ${e}
10695
10695
  Result ${e} exceeds ${t.tag} range [${a.min}, ${a.max}]`,kind:"overflow"})}function J$(e){switch(e.tag){case"u8":case"i8":return 8;case"u16":case"i16":return 16;case"u32":case"i32":return 32;case"u64":case"i64":return 64;case"usize":case"isize":return qi();default:return null}}function eb(e,t){if(t.tag==="u64"||t.tag==="i64"||t.tag==="usize"||t.tag==="isize"){let r=typeof e=="bigint"?e:BigInt(Math.floor(e)),i=Iu(t),o=typeof i.min=="bigint"?i.min:BigInt(i.min),a=typeof i.max=="bigint"?i.max:BigInt(i.max);return r<o?o:r>a?a:r}let n=typeof e=="bigint"?Number(e):e;switch(t.tag){case"u8":return Math.floor(Math.abs(n))%256;case"i8":return Math.max(-128,Math.min(127,Math.floor(n)));case"u16":return Math.floor(Math.abs(n))%65536;case"i16":return Math.max(-32768,Math.min(32767,Math.floor(n)));case"u32":return Math.floor(Math.abs(n))%4294967296;case"i32":return Math.max(-2147483648,Math.min(2147483647,Math.floor(n)));case"f32":case"f64":return n;default:return n}}function Zs(e,t,n,r,i,o){let a=Wn(e),s=Wn(t);return a===null||s===null?oe(n,{env:i,context:o}):ko(r(a,s),n,i,o)??oe(n,{env:i,context:o})}function Ka(e,t,n,r,i){let o=Wn(e),a=Wn(t);if(o===null||a===null)return oe(Bt(),{env:r,context:i});if(typeof o=="bigint"||typeof a=="bigint"){let s=typeof o=="bigint"?o:BigInt(Math.floor(o)),l=typeof a=="bigint"?a:BigInt(Math.floor(a));return on(n(s,l))}return on(n(o,a))}function tb(e,t,n,r,i){let o=Wn(e);return o===null?oe(t,{env:r,context:i}):ko(n(o),t,r,i)??oe(t,{env:r,context:i})}function hy({expr:e,env:t,context:n}){let r=e.func.token.value,i=/^__yo_comptime_(u8|i8|u16|i16|u32|i32|u64|i64|usize|isize|f32|f64|int|float)_(add|sub|mul|div|mod|eq|neq|lt|lte|gt|gte|neg|to_comptime_string|bit_and|bit_or|bit_xor|bit_not|shl|shr)$/,o=r.match(i);if(!o)throw m({token:e.token,errorMessage:`Expected numeric function, got: ${r}`});let[,a,s]=o,u=(()=>{switch(a){case"u8":return Ta();case"i8":return Ea();case"u16":return $a();case"i16":return ba();case"u32":return Ca();case"i32":return go();case"u64":return ka();case"i64":return wa();case"usize":return _n();case"isize":return va();case"f32":return Fa();case"f64":return ho();case"int":case"comptime_int":return yo();case"float":case"comptime_float":return ha();default:throw new Error(`Unknown numeric type: ${a}`)}})();if(s==="neg"||s==="to_comptime_string"||s==="bit_not"){let y=R({expr:e.args[0],env:t,context:{...n}});if(!y.$||!y.$.value)throw m({token:y.token,errorMessage:`Expected ${a} type for "${r}" argument, got:
10696
10696
  ${L(y)}`});t=y.$.env;let h;if(s==="neg")if(wt(y.$.value)){if(u.tag==="u8"||u.tag==="u16"||u.tag==="u32"||u.tag==="u64"||u.tag==="usize")throw m({token:e.token,errorMessage:`Cannot apply negation to unsigned type: ${a}`});h=tb(y.$.value,u,v=>-v,t,n)}else h=oe(u,{env:t,context:n});else if(s==="bit_not")if(wt(y.$.value)||Wr(y.$.value)){let v=Wn(y.$.value);if(v!==null){let E=typeof v=="bigint"?v:BigInt(Math.floor(v)),$=J$(u),C;if($!==null){let k=(1n<<BigInt($))-1n;if(C=E^k,sp(u)){let b=1n<<BigInt($-1);C>=b&&(C=C-(1n<<BigInt($)))}}else C=~E;h=ko(C,u,t,n)??oe(u,{env:t,context:n})}else h=oe(u,{env:t,context:n})}else h=oe(u,{env:t,context:n});else if(s==="to_comptime_string")if(wt(y.$.value)){let v=Wn(y.$.value);v!==null?h=lr(v.toString()):h=oe(Pn(),{env:t,context:n})}else h=oe(Pn(),{env:t,context:n});else throw m({token:e.token,errorMessage:`Unexpected unary operation: ${s}`});return e.$={env:t,type:s==="to_comptime_string"?Pn():u,value:h,pathCollection:[]},e}let c=R({expr:e.args[0],env:t,context:{...n}});if(!c.$||!c.$.value)throw m({token:c.token,errorMessage:`Expected ${a} type for "${r}" left argument, got:
10697
10697
  ${L(c)}`});t=c.$.env;let f=R({expr:e.args[1],env:t,context:{...n}});if(!f.$||!f.$.value)throw m({token:f.token,errorMessage:`Expected ${a} type for "${r}" right argument, got:
10698
10698
  ${L(f)}`});t=f.$.env;let p=c.$.value,_=f.$.value,d,g;switch(s){case"add":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"||typeof h=="bigint"?(typeof y=="bigint"?y:BigInt(y))+(typeof h=="bigint"?h:BigInt(h)):y+h;df(v,u,"add",y,h,e.token)}d=Zs(p,_,u,(v,E)=>{if(typeof v=="bigint"||typeof E=="bigint"){let $=typeof v=="bigint"?v:BigInt(v),C=typeof E=="bigint"?E:BigInt(E);return $+C}return v+E},t,n),g=u;break}case"sub":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"||typeof h=="bigint"?(typeof y=="bigint"?y:BigInt(y))-(typeof h=="bigint"?h:BigInt(h)):y-h;df(v,u,"subtract",y,h,e.token)}d=Zs(p,_,u,(v,E)=>{if(typeof v=="bigint"||typeof E=="bigint"){let $=typeof v=="bigint"?v:BigInt(v),C=typeof E=="bigint"?E:BigInt(E);return $-C}return v-E},t,n),g=u;break}case"mul":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"||typeof h=="bigint"?(typeof y=="bigint"?y:BigInt(y))*(typeof h=="bigint"?h:BigInt(h)):y*h;df(v,u,"multiply",y,h,e.token)}d=Zs(p,_,u,(v,E)=>{if(typeof v=="bigint"||typeof E=="bigint"){let $=typeof v=="bigint"?v:BigInt(v),C=typeof E=="bigint"?E:BigInt(E);return $*C}return v*E},t,n),g=u;break}case"div":{let y=Wn(_);if(y===0||y===0n)throw m({token:f.token,errorMessage:`Division by zero in "${r}" operation`});d=Zs(p,_,u,(h,v)=>{if(typeof h=="bigint"||typeof v=="bigint"){let E=typeof h=="bigint"?h:BigInt(h),$=typeof v=="bigint"?v:BigInt(v);return E/$}return po(u)||u.tag==="comptime_int"?Math.trunc(h/v):h/v},t,n),g=u;break}case"mod":{if(_o(u))throw m({token:e.token,errorMessage:`Modulo operation not supported for floating point types: ${a}`});let y=Wn(_);if(y===0||y===0n)throw m({token:f.token,errorMessage:`Modulo by zero in "${r}" operation`});d=Zs(p,_,u,(h,v)=>{if(typeof h=="bigint"||typeof v=="bigint"){let E=typeof h=="bigint"?h:BigInt(h),$=typeof v=="bigint"?v:BigInt(v);return E%$}return h%v},t,n),g=u;break}case"eq":d=Ka(p,_,(y,h)=>y===h,t,n),g=Bt();break;case"neq":d=Ka(p,_,(y,h)=>y!==h,t,n),g=Bt();break;case"lt":d=Ka(p,_,(y,h)=>y<h,t,n),g=Bt();break;case"lte":d=Ka(p,_,(y,h)=>y<=h,t,n),g=Bt();break;case"gt":d=Ka(p,_,(y,h)=>y>h,t,n),g=Bt();break;case"gte":d=Ka(p,_,(y,h)=>y>=h,t,n),g=Bt();break;case"bit_and":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"?y:BigInt(Math.floor(y)),E=typeof h=="bigint"?h:BigInt(Math.floor(h));d=ko(v&E,u,t,n)??oe(u,{env:t,context:n})}else d=oe(u,{env:t,context:n});g=u;break}case"bit_or":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"?y:BigInt(Math.floor(y)),E=typeof h=="bigint"?h:BigInt(Math.floor(h));d=ko(v|E,u,t,n)??oe(u,{env:t,context:n})}else d=oe(u,{env:t,context:n});g=u;break}case"bit_xor":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"?y:BigInt(Math.floor(y)),E=typeof h=="bigint"?h:BigInt(Math.floor(h));d=ko(v^E,u,t,n)??oe(u,{env:t,context:n})}else d=oe(u,{env:t,context:n});g=u;break}case"shl":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"?y:BigInt(Math.floor(y)),E=typeof h=="bigint"?Number(h):Math.floor(h);d=ko(v<<BigInt(E),u,t,n)??oe(u,{env:t,context:n})}else d=oe(u,{env:t,context:n});g=u;break}case"shr":{let y=Wn(p),h=Wn(_);if(y!==null&&h!==null){let v=typeof y=="bigint"?y:BigInt(Math.floor(y)),E=typeof h=="bigint"?Number(h):Math.floor(h);d=ko(v>>BigInt(E),u,t,n)??oe(u,{env:t,context:n})}else d=oe(u,{env:t,context:n});g=u;break}default:throw m({token:e.token,errorMessage:`Unexpected binary operation: ${s}`})}return e.$={env:t,type:g,value:d,pathCollection:[]},e}var vy=j(()=>{xe();ce();dt();Ae();Mr();ge();_r();_f();Ke();Je()});function Ty({expr:e,env:t,context:n}){if(e.args.length===0)throw m({token:e.token,errorMessage:'Expected at least 1 argument for "comptime_print", got 0'});let r=[];for(let i of e.args){let o=R({expr:i,env:t,context:{...n}});if(!o.$)throw m({token:i.token,errorMessage:`Failed to evaluate argument for "comptime_print": ${L(i)}`});t=o.$.env,St(o.$.value)?r.push(o.$.value.value):r.push(vt(o.$.value))}return!n.isValidatingFunctionDefinition&&n.isExecuting&&console.log(...r),e.$={env:t,type:se.type,value:se,pathCollection:[]},e}var Ey=j(()=>{xe();ce();xn();ge();Ke()});function $y({expr:e,env:t,context:n}){if(T(e,F.__yo_comptime_string_length)||T(e,F.__yo_comptime_string_to_upper)||T(e,F.__yo_comptime_string_to_lower)){let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$||!Sn(r.$.type)||!r.$.value)throw m({token:r.token,errorMessage:`Expected comptime_string type for "${e.func.token.value}" argument, got:
10699
- ${L(r)}`});t=r.$.env;let i;if(T(e,F.__yo_comptime_string_length))St(r.$.value)?i=Fi(BigInt(r.$.value.value.length)):i=oe(yo(),{env:t,context:n});else if(T(e,F.__yo_comptime_string_to_upper))St(r.$.value)?i=lr(r.$.value.value.toUpperCase()):i=oe(Pn(),{env:t,context:n});else if(T(e,F.__yo_comptime_string_to_lower))St(r.$.value)?i=lr(r.$.value.value.toLowerCase()):i=oe(Pn(),{env:t,context:n});else throw m({token:e.token,errorMessage:`Unexpected function call for "${e.func.token.value}", expected string unary function`});e.$={env:t,type:i.type,value:i,pathCollection:[]}}else if(T(e,F.__yo_comptime_string_slice)){if(e.args.length<2||e.args.length>3)throw m({token:e.token,errorMessage:`"${e.func.token.value}" expects 2 or 3 arguments (string, start, end?), got ${e.args.length}`});let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$||!Sn(r.$.type)||!r.$.value)throw m({token:r.token,errorMessage:`Expected comptime_string type for "${e.func.token.value}" string argument, got:
10699
+ ${L(r)}`});t=r.$.env;let i;if(T(e,F.__yo_comptime_string_length))St(r.$.value)?i=Li(BigInt(r.$.value.value.length)):i=oe(yo(),{env:t,context:n});else if(T(e,F.__yo_comptime_string_to_upper))St(r.$.value)?i=lr(r.$.value.value.toUpperCase()):i=oe(Pn(),{env:t,context:n});else if(T(e,F.__yo_comptime_string_to_lower))St(r.$.value)?i=lr(r.$.value.value.toLowerCase()):i=oe(Pn(),{env:t,context:n});else throw m({token:e.token,errorMessage:`Unexpected function call for "${e.func.token.value}", expected string unary function`});e.$={env:t,type:i.type,value:i,pathCollection:[]}}else if(T(e,F.__yo_comptime_string_slice)){if(e.args.length<2||e.args.length>3)throw m({token:e.token,errorMessage:`"${e.func.token.value}" expects 2 or 3 arguments (string, start, end?), got ${e.args.length}`});let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$||!Sn(r.$.type)||!r.$.value)throw m({token:r.token,errorMessage:`Expected comptime_string type for "${e.func.token.value}" string argument, got:
10700
10700
  ${L(r)}`});t=r.$.env;let i=R({expr:e.args[1],env:t,context:{...n}});if(!i.$||!dn(i.$.type)||!i.$.value)throw m({token:i.token,errorMessage:`Expected comptime_int type for "${e.func.token.value}" start argument, got:
10701
10701
  ${L(i)}`});t=i.$.env;let o;if(e.args.length===3){if(o=R({expr:e.args[2],env:t,context:{...n}}),!o.$||!dn(o.$.type)||!o.$.value)throw m({token:o.token,errorMessage:`Expected comptime_int type for "${e.func.token.value}" end argument, got:
10702
10702
  ${L(o)}`});t=o.$.env}let a;if(St(r.$.value)&&Wr(i.$.value)){let s=r.$.value.value,l=i.$.value.value,u=typeof l=="bigint"?Number(l):l,c=s.length;if(o&&o.$&&o.$.value&&Wr(o.$.value)){let f=o.$.value.value;c=typeof f=="bigint"?Number(f):f}a=lr(s.slice(u,c))}else a=oe(Pn(),{env:t,context:n});e.$={env:t,type:a.type,value:a,pathCollection:[]}}else{let r=R({expr:e.args[0],env:t,context:{...n}});if(!r.$||!Sn(r.$.type)||!r.$.value)throw m({token:r.token,errorMessage:`Expected comptime_string type for "${e.func.token.value}" first argument, got:
@@ -10723,8 +10723,8 @@ ${L(i)}`});return t=a.$.env,e.$={env:t,type:se.type,value:se,pathCollection:[]},
10723
10723
  ${L(r)}`});t=o.$.env;let a=R({expr:i,env:t,context:{...n}});if(!a.$)throw m({token:i.token,errorMessage:`Failed to evaluate the index argument for "${F.__yo_dup_tuple_element[0]}":
10724
10724
  ${L(i)}`});t=a.$.env;let s=o.$.type;if(!s||!st(s))throw m({token:r.token,errorMessage:`Expected tuple type for "${F.__yo_dup_tuple_element[0]}"`});let l=a.$.value;if(!wt(l))throw m({token:i.token,errorMessage:`Expected number value for index in "${F.__yo_dup_tuple_element[0]}"`});let u=Number(l.value);if(u<0||u>=s.fields.length)throw m({token:i.token,errorMessage:`Index out of bounds for tuple in "${F.__yo_dup_tuple_element[0]}"`});let c=s.fields[u].type;return e.$={env:t,type:c,value:void 0,pathCollection:[]},e}var yf=j(()=>{ft();xe();ce();pn();dt();Ae();Je();xn();ge();Su();Ke()});function By({expr:e,env:t,context:n}){He(e,F.downcast,2);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:"Failed to evaluate dyn value argument for downcast."});t=i.$.env;let o=i.$.type;if(!o||!ot(o))throw m({token:r.token,errorMessage:`downcast expects a Dyn type as first argument, got ${o?x(o):"unknown"}.`});let a=e.args[1],s=R({expr:a,env:t,context:{...n}});if(!s.$)throw m({token:a.token,errorMessage:"Failed to evaluate type argument for downcast."});if(t=s.$.env,!s.$.value||!Y(s.$.value))throw m({token:a.token,errorMessage:`downcast expects a type as second argument, got ${s.$.type?x(s.$.type):"unknown"}.`});let l=s.$.value.value,{optionType:u,env:c}=mf(l,t,n);t=c;let f=oe(u,{env:t,context:n});return e.$={env:t,type:u,value:f,pathCollection:[]},Ft(e,!0),e}var Gy=j(()=>{xe();ce();Ae();Je();ge();Ke();yf()});function Js(e){if(e.result.kind!=="type")throw new Error("Expected type call result");return e.result.result}function Wy(e){if(e.result.kind!=="module-type")throw new Error("Expected module type call result");return e.result.result}function Yy(e){if(e.result.kind!=="trait-type")throw new Error("Expected trait type call result");return e.result.result}function qy(e){if(e.result.kind!=="array")throw new Error("Expected array call result");return e.result.result}function Qa(e,t,n,r,i){var c;if(!i.isEvaluatingFunctionBodyOrAsyncBlock)return;let o;if(i.isEvaluatingFunctionBodyOrAsyncBlock&&(o=i.isEvaluatingFunctionBodyOrAsyncBlock.evaluationEnv),!o||t>=o.frames.length)return;let a,s=-1;for(let f=0;f<o.frames.length;f++){let p=(c=o.frames[f])==null?void 0:c.variables.find(_=>_.name===e);if(p){a=p,s=f;break}}if(!a||s<0||a.isCompileTimeOnly)return;i.capturedVariables||(i.capturedVariables=new Map);let l=i.capturedVariables.get(e),u=l&&(l.usageType==="own"||l.usageType==="write"&&n==="read")?l.usageType:n;i.capturedVariables.set(e,{frameLevel:s,usageType:u,token:r})}var Nu=j(()=>{});function nb(e){let t=e;if(S(t)&&T(t,"?=",2)&&(t=t.args[0]),S(t)&&T(t,"=",2)&&(t=t.args[0]),!S(t)||!T(t,":",2))return;let n=t.args[0],r=t.args[1];if(!S(n)||!T(n,D.comptime)||n.args.length!==1)return;let i=n.args[0];if(!(!H(i)||!Dt(i)))return{name:i.token.value,typeExpr:r,token:i.token}}function gf({expr:e,env:t,context:n,isParameterComptimeByDefault:r,allowVariableShadowing:i}){var A,I,N;let o,a=r,s=!1,l=!1,u,c,f,p,_,d=e,g,y,h,v;if(S(d)&&T(d,"=")){let M=d.args[0];if(M&&S(M)&&T(M,":",2))u=M,c=d.args[1],v=c,d=u;else throw m({token:d.func.token,errorMessage:'Use "?=" for default parameter values. Assigned values require an explicit type: (name : Type) = value.'})}if(S(d)&&T(d,":=",2))throw m({token:d.func.token,errorMessage:'":=" is not allowed in parameter lists. Use (name : Type) = value instead.'});if(S(d)&&T(d,"?=",2)&&(c=d.args[1],u=d.args[0],h=c,d=u),S(d)&&T(d,":",2)?(c=d.args[1],u=d.args[0],g=c):v?u=d:h?(g=void 0,u=d):g=d,!g)throw m({token:e.token,errorMessage:h?"Default parameters must specify a type: (name : Type) ?= value.":'Expected an explicit type annotation for function parameter. Use "(name : Type)".'});if(u){if(S(u)&&T(u,D.comptime)){if(r)throw m({token:u.token,errorMessage:'"forall"/"using" parameters are "comptime" by default. Not needed to use "comptime" modifier.'});if(a=!0,u.args.length!==1)throw m({token:u.token,errorMessage:`Expected one argument for "comptime" , got ${u.args.length}`});u=u.args[0]}if(S(u)&&T(u,"own")){if(l=!0,u.args.length!==1)throw m({token:u.token,errorMessage:`Expected one argument for "own", got ${u.args.length}`});u=u.args[0]}if(S(u)&&T(u,D.quote)){if(s=!0,u.args.length!==1)throw m({token:u.token,errorMessage:`Expected one argument for "quote" (or ":"), got ${u.args.length}`});if(a)throw m({token:u.token,errorMessage:'Cannot use "comptime" with "quote" (or ":"). "quote" parameters means compile-time only, so "comptime" is redundant.'});a=!0,u=u.args[0]}if(!H(u)||!Dt(u))throw m({token:u.token,errorMessage:`Expected identifier for parameter label, got ${L(u)}`});o=u.token.value,y=u}if(!o)throw m({token:e.token,errorMessage:`Expected a label for function parameter, got ${L(e)}`});if(o==="Self")throw m({token:(y==null?void 0:y.token)??e.token,errorMessage:"Not allowed to use 'Self' as the label."});{if(v){let M=R({expr:v,env:t,context:{...n}});if(!M.$)throw m({token:v.token,errorMessage:`Failed to evaluate assigned value expression: ${L(v)}`});t=M.$.env;let V=M.$.value;if(!Y(V))throw m({token:v.token,errorMessage:`Expected type value for = assignment, got ${vt(V)}`});if(f=Ht(),_=V,!a)throw m({token:v.token,errorMessage:`Assigned value (=) is only allowed for compile-time parameters. Use "comptime(${o})" or put this in "forall(...)".`})}if(g){let M=R({expr:g,env:t,context:{...n}});if(!M.$)throw m({token:g.token,errorMessage:`(3) Failed to evaluate type expression: ${L(g)}`});t=M.$.env;let V=M.$.value;if(Y(V))f=V.value;else throw m({token:g.token,errorMessage:`Expected type for function parameter, got ${vt(V)}`})}if(h){let M=R({expr:h,env:t,context:{...n}});if((A=M.$)!=null&&A.env&&(t=(I=M.$)==null?void 0:I.env),p=(N=M.$)==null?void 0:N.value,!p)throw m({token:h.token,errorMessage:`Expected a compile-time known value for default parameter, got ${L(h)}`});if(!f)f=p.type;else if(!ie({type:f,env:t},{type:p.type,env:t}))throw m({token:h.token,errorMessage:`Incompatible default value type:
10725
10725
  - Expected: ${x(f)}
10726
- - Got : ${x(p.type)}`})}if(!f)throw m({token:e.token,errorMessage:"Expected type for function parameter}"});if(a&&Ii(f,t))throw m({token:(u==null?void 0:u.token)??e.token,errorMessage:`Parameter marked as "comptime" but type is not available at compile-time:
10727
- ${x(f)}`});if(!a&&Ai(f,t))throw m({token:(u==null?void 0:u.token)??e.token,errorMessage:`Parameter marked as runtime but type is not available at runtime:
10726
+ - Got : ${x(p.type)}`})}if(!f)throw m({token:e.token,errorMessage:"Expected type for function parameter}"});if(a&&Si(f,t))throw m({token:(u==null?void 0:u.token)??e.token,errorMessage:`Parameter marked as "comptime" but type is not available at compile-time:
10727
+ ${x(f)}`});if(!a&&Ii(f,t))throw m({token:(u==null?void 0:u.token)??e.token,errorMessage:`Parameter marked as runtime but type is not available at runtime:
10728
10728
  ${x(f)}`});if(!a&&te(f)&&(f.forallParameters.length>0||f.parameters.some(M=>M.isCompileTimeOnly)))throw m({token:(u==null?void 0:u.token)??e.token,errorMessage:`Runtime function parameters with generic function types are not allowed:
10729
10729
  ${x(f)}
10730
10730
 
@@ -10743,19 +10743,19 @@ use_id :: (fn(forall(T : Type),
10743
10743
  ) -> T) {
10744
10744
  return val.id();
10745
10745
  }
10746
- `});let $=ue(t,o),C=$.length>0?$[$.length-1]:void 0,w=$.find(M=>{if(M.value&&Y(M.value[0])){let V=M.value[0];if(z(V.value))return!0}return!1}),k=E,b=f;if(w){let M=w.value[0],V=M.value;if(_&&Y(_)&&z(_.value)){let O=_.value,W=[...V.requiredTraits];for(let G of O.requiredTraits)W.some(U=>U.traitType.id===G.traitType.id)||W.push(G);let P=[...V.negativeTraits??[]];if(O.negativeTraits)for(let G of O.negativeTraits)P.some(U=>U.traitType.id===G.traitType.id)||P.push(G);V.requiredTraits=W,V.negativeTraits=P}k=M,b=Ln(V)}else if(C&&C.isCompileTimeOnly&&C.value&&C.frameLevel===t.frames.length-1)k=C.value[0],b=C.type;else{let{env:M}=Be({env:t,variable:{name:o,type:f,isCompileTimeOnly:a,value:_?[_]:a?[oe(f,{variableName:o,env:t,context:n})]:void 0,token:(u==null?void 0:u.token)??e.token,initializedAtToken:(u==null?void 0:u.token)??e.token,consumedAtToken:void 0,isOwningTheRcValue:l,isOwningTheSameRcValueAs:void 0,isReassignable:!1},allowVariableShadowing:i});t=M}return u&&(u.$={env:t,type:b,value:k,pathCollection:[]}),u!==e&&g!==e&&(e.$={env:t,type:se.type,value:se,pathCollection:[]}),wn(f),{parameter:{label:o,type:f,exprs:Qo({expr:e,labelExpr:y,typeExpr:g,defaultValueExpr:h,assignedValueExpr:v}),isCompileTimeOnly:a,isQuote:s,isOwningTheRcValue:l,isImplicit:!1,assignedValue:_},env:t}}function rb({constraintExprs:e,env:t,context:n}){let r=[];for(let i of e){if(!S(i)||!T(i,"<:",2))continue;let o=i.args[0];if(H(o)){let s=o.token.value;if(ue(t,s).length===0){let u=Or(Ht(),s,{env:t,context:n}),c=_e(u),{env:f}=Be({env:t,variable:{name:s,type:Ln(u),isCompileTimeOnly:!0,value:[c],token:o.token,initializedAtToken:o.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=f,o.$={env:t,type:Ln(u),value:c,pathCollection:[]}}}let a=hf({constraintExprs:[i],env:t,context:n,collectPendingTraits:!0});t=a.env,r.push(...a.pendingTraits)}return{env:t,pendingConstraints:r}}function Hy({pendingConstraints:e,env:t,context:n}){let r=[];for(let i of e){let o=ib({lhsExpr:i.lhsExpr,traitExpr:i.traitExpr,originalConstraintExpr:i.originalConstraintExpr,env:t,context:n});t=o.env,o.success||r.push(i)}return{env:t,pendingConstraints:r}}function jy({concreteType:e,traitExpr:t,isNegated:n,constraintExpr:r,env:i,context:o}){let a;try{a=R({expr:t,env:i,context:{...o}})}catch{return{env:i,success:!1}}if(!a.$||!a.$.value||!Y(a.$.value))return{env:i,success:!1};i=a.$.env;let s=a.$.value;if(!ht(s.value))throw m({token:t.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(s.value)}`});let l=s.value,u=Mn({targetType:e,traitType:l,env:i});if(n){if(u)throw m({token:r.token,errorMessage:`Type ${x(e)} must NOT implement ${x(l)}, but it does.`})}else if(!u)throw m({token:r.token,errorMessage:`Type ${x(e)} does not implement required trait ${x(l)}.`});return{env:i,success:!0}}function ib({lhsExpr:e,traitExpr:t,originalConstraintExpr:n,env:r,context:i}){let o=!1,a=t;S(t)&&T(t,"!")&&t.args.length===1&&(o=!0,a=t.args[0]);let s;if(H(e)){let f=e.token.value,p=ue(r,f);if(p.length===0)return{env:r,success:!1};let _=p[p.length-1];if(_.value&&Y(_.value[0])&&z(_.value[0].value))s=_.value[0].value;else if(_.value&&Y(_.value[0]))try{return jy({concreteType:_.value[0].value,traitExpr:a,isNegated:o,constraintExpr:n,env:r,context:i})}catch{return{env:r,success:!1}}else return{env:r,success:!1}}else{let f;try{f=R({expr:e,env:r,context:{...i}})}catch{return{env:r,success:!1}}if(!f.$||!f.$.value||!Y(f.$.value))return{env:r,success:!1};r=f.$.env;let p=f.$.value;if(!z(p.value))try{return jy({concreteType:p.value,traitExpr:a,isNegated:o,constraintExpr:n,env:r,context:i})}catch{return{env:r,success:!1}}s=p.value}let l;try{l=R({expr:a,env:r,context:{...i}})}catch{return{env:r,success:!1}}if(!l.$||!l.$.value||!Y(l.$.value))return{env:r,success:!1};r=l.$.env;let u=l.$.value;if(!ht(u.value))throw m({token:a.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(u.value)}`});let c=u.value;if(c.receiverType)throw m({token:a.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});return r=Ti({env:r,someType:s,traitType:c,isNegated:o}),{env:r,success:!0}}function hf({constraintExprs:e,env:t,context:n,collectPendingTraits:r=!1}){let i=[];for(let o of e){if(!S(o)||!T(o,"<:",2))throw m({token:o.token,errorMessage:`Expected constraint in the form "T <: Trait" or "T <: (Trait1, Trait2)", got: ${L(o)}`});let a=o.args[0],s=o.args[1],l;if(H(a)){let c=a.token.value,f=ue(t,c);if(f.length>0){let p=f[f.length-1];if(p.value&&Y(p.value[0])&&z(p.value[0].value))l=p.value[0].value;else if(p.value&&Y(p.value[0])){let _=p.value[0].value;t=Ky({concreteType:_,rhsExpr:s,constraintExpr:o,env:t,context:n});continue}else throw m({token:a.token,errorMessage:`Expected type for left-hand side of where clause constraint, got variable "${c}".`})}else{l=Or(Ht(),c,{env:t,context:n});let p=_e(l),{env:_}=Be({env:t,variable:{name:c,type:Ln(l),isCompileTimeOnly:!0,value:[p],token:a.token,initializedAtToken:a.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=_,a.$={env:t,type:Ln(l),value:p,pathCollection:[]}}}else{let c=R({expr:a,env:t,context:{...n}});if(!c.$||!c.$.value||!Y(c.$.value))throw m({token:a.token,errorMessage:"Expected type for left-hand side of where clause constraint."});t=c.$.env;let f=c.$.value;if(!z(f.value)){t=Ky({concreteType:f.value,rhsExpr:s,constraintExpr:o,env:t,context:n});continue}l=f.value}let u=[];S(s)&&T(s,D.tuple)?u.push(...s.args):u.push(s);for(let c=0;c<u.length;c++){let f=u[c],p=!1,_=f;S(f)&&T(f,"!")&&f.args.length===1&&(p=!0,_=f.args[0]);let d;try{d=R({expr:_,env:t,context:{...n}})}catch(h){if(r){i.push({lhsExpr:a,traitExpr:f,originalConstraintExpr:o});continue}throw h}if(!d.$||!d.$.value||!Y(d.$.value)){if(r){i.push({lhsExpr:a,traitExpr:f,originalConstraintExpr:o});continue}throw m({token:_.token,errorMessage:"Expected trait type for right-hand side of where clause constraint."})}t=d.$.env;let g=d.$.value;if(!ht(g.value))throw m({token:_.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(g.value)}`});let y=g.value;if(y.receiverType)throw m({token:_.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});t=Ti({env:t,someType:l,traitType:y,isNegated:p})}}return{env:t,pendingTraits:i}}function wo({constraintExprs:e,env:t,context:n}){return e.length===0?{env:t}:{env:hf({constraintExprs:e,env:t,context:n,collectPendingTraits:!1}).env}}function Ky({concreteType:e,rhsExpr:t,constraintExpr:n,env:r,context:i}){let o=[];if(S(t)&&T(t,D.tuple))for(let a of t.args)S(a)&&T(a,"!")&&a.args.length===1?o.push({expr:a.args[0],isNegated:!0}):o.push({expr:a,isNegated:!1});else S(t)&&T(t,"!")&&t.args.length===1?o.push({expr:t.args[0],isNegated:!0}):o.push({expr:t,isNegated:!1});for(let{expr:a,isNegated:s}of o){let l=R({expr:a,env:r,context:{...i}});if(!l.$||!l.$.value||!Y(l.$.value))throw m({token:a.token,errorMessage:"Expected trait type for right-hand side of where clause constraint."});r=l.$.env;let u=l.$.value;if(!ht(u.value))throw m({token:a.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(u.value)}`});let c=u.value,f=Mn({targetType:e,traitType:c,env:r});if(s){if(f)throw m({token:n.token,errorMessage:`Type ${x(e)} must NOT implement ${x(c)}, but it does.`})}else if(!f)throw m({token:n.token,errorMessage:`Type ${x(e)} does not implement required trait ${x(c)}.`})}return r}function vf({parameterExprs:e,env:t,context:n}){var p,_,d;t=Ct(t);let r=[],i=[],o=[],a,s,l=!1;if(e.length>0){let g=e[0];if(S(g)&&T(g,D.forall)){let y=g.args;for(let h=0;h<y.length;h++){let v=y[h];if(S(v)&&T(v,"...")&&v.args.length===1&&H(v.args[0])){let w=v.args[0].token.value;if(i.find(M=>M.label===w))throw m({token:v.token,errorMessage:`Duplicate label "${w}" in type parameter`});let b=Xo(w,t),A=Er(1),{env:I}=Be({env:t,variable:{name:w,type:A,isCompileTimeOnly:!0,value:[_e(b)],token:v.args[0].token,initializedAtToken:v.args[0].token,consumedAtToken:void 0,isOwningTheRcValue:!1}});t=I,v.$={env:t,type:A,value:_e(b),pathCollection:[]};let N={label:w,type:A,isCompileTimeOnly:!0,isQuote:!1,isOwningTheRcValue:!1,isImplicit:!1,isEffectRowSpread:!1,exprs:Qo({expr:v,labelExpr:v.args[0],typeExpr:v.args[0],defaultValueExpr:void 0,assignedValueExpr:void 0})};i.push(N);continue}let{parameter:E,env:$}=gf({expr:v,env:t,context:{...n},isParameterComptimeByDefault:!0,allowVariableShadowing:!0});if(i.find(w=>w.label===E.label))throw m({token:v.token,errorMessage:`Duplicate label "${E.label}" in type parameter`});i.push(E),t=$}}}let u=0;for(let g=0;g<e.length;g++){let y=e[g];if(S(y)&&T(y,D.using)){if(u++,u>1)throw m({token:y.token,errorMessage:'Only one "using(...)" clause is allowed per function signature. Combine all implicit parameters into a single using(), e.g.: using(a : TypeA, b : TypeB)'});let h=y.args;for(let v=0;v<h.length;v++){let E=h[v];if(S(E)&&T(E,"...")&&E.args.length===1&&H(E.args[0])){let M=E.args[0].token.value,O=ue(t,M).at(-1);if(!O)throw m({token:E.token,errorMessage:`Effect row variable "${M}" not found in scope. Declare it with forall(..., ...(${M}))`});let W,P=(p=O.value)==null?void 0:p[0];if(P&&Y(P)&&Xt(P.value)){let U=P.value;for(let X of U.implicitParameters)o.push({...X,isEffectRowSpread:!1});continue}else if(P&&Y(P)){if(!(z(P.value)&&P.value.isEffectsRow||Xt(P.value)))throw m({token:E.token,errorMessage:`"...(${M})" requires "${M}" to be a forall-declared effect row variable, but it resolves to a concrete type. Use individual effect types directly in using(), e.g. using(name : ${M}) instead of using(...(${M}))`});W=P.value}else if(P&&Ge(P)&&Xt(P.type)){let U=P.type;for(let X of U.implicitParameters)o.push({...X,isEffectRowSpread:!1});continue}else if(P&&Ge(P))W=Xo(M,t);else throw m({token:E.token,errorMessage:`Effect row variable "${M}" has invalid value. Expected a type.`});let G={label:M,type:W,isCompileTimeOnly:!0,isImplicit:!0,isEffectRowSpread:!0,isQuote:!1,isOwningTheRcValue:!1,exprs:Qo({expr:E,labelExpr:E.args[0],typeExpr:E.args[0],defaultValueExpr:void 0,assignedValueExpr:void 0})};o.push(G);continue}if(!(S(E)&&(T(E,":")||T(E,"=")||T(E,"?=")||T(E,":="))))throw m({token:E.token,errorMessage:'Implicit parameter requires a label. Use "using(name : Type)" instead of "using(Type)".'});let{parameter:C,env:w}=gf({expr:E,env:t,context:{...n},isParameterComptimeByDefault:!0,allowVariableShadowing:!0});if(i.find(M=>M.label===C.label))throw m({token:E.token,errorMessage:`Duplicate label "${C.label}" in implicit parameter (already in forall)`});if(o.find(M=>M.label===C.label))throw m({token:E.token,errorMessage:`Duplicate label "${C.label}" in implicit parameter`});let A={...C,isCompileTimeOnly:!0,isImplicit:!0};o.push(A);let N=w.frames[w.frames.length-1].variables.find(M=>M.name===C.label);N&&(N.isImplicit=!0),t=w}}}let c=new Set;for(let g=0;g<e.length;g++){let y=e[g];if(S(y)&&(T(y,D.forall)||T(y,D.using)||T(y,D.where)||T(y,"...")))continue;let h=nb(y);if(h){let v=R({expr:h.typeExpr,env:t,context:{...n}});if((_=v.$)!=null&&_.env&&(t=v.$.env),!v.$||!v.$.value||!Y(v.$.value))continue;let E=v.$.value.value,$=oe(E,{variableName:h.name,env:t,context:n}),{env:C}=Be({env:t,variable:{name:h.name,type:E,isCompileTimeOnly:!0,value:[$],token:h.token,initializedAtToken:h.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=C,c.add(g)}}let f=[];if(e.length>0){let g=e[e.length-1];if(S(g)&&T(g,D.where)){if(s=g.args,s.length===0)throw m({token:g.token,errorMessage:"The where clause must have at least one constraint."});let y=rb({constraintExprs:s,env:t,context:n});t=y.env,f=y.pendingConstraints}}for(let g=0;g<e.length;g++){let y=e[g];if(S(y)&&T(y,D.forall)){if(g!==0)throw m({token:y.token,errorMessage:`Expected type parameters to be the first argument, got ${g+1}`});continue}else{if(S(y)&&T(y,D.using))continue;if(S(y)&&T(y,D.where)){if(g!==e.length-1)throw m({token:y.token,errorMessage:"The where clause must be the last parameter in the function signature."});continue}else if(H(y)&&$n(y,"...")||S(y)&&T(y,"...")){l=!0;let h=!1,v=!1,E="...",$=y,C=se.type;if(S(y)){let b=y.args[0];if(b){if(S(b)&&T(b,D.comptime))throw h=!0,b.args.length!==1?m({token:b.token,errorMessage:`Expected one argument for "comptime" , got ${b.args.length}`}):($=b.args[0],E=b.args[0].token.value,C=se.type,m({token:b.token,errorMessage:"...(comptime(param_name)) is not supported yet."}));if(S(b)&&T(b,D.quote)){if(h=!0,v=!0,b.args.length!==1)throw m({token:b.token,errorMessage:`Expected one argument for "quote" (or ":"), got ${b.args.length}`});$=b.args[0],E=b.args[0].token.value,C=Ss()}else throw Dt(b)?($=b,E=b.token.value,C=se.type,m({token:b.token,errorMessage:"...(param_name) is not supported yet."})):m({token:b.token,errorMessage:`Expected a valid variable name for variadic parameter, got ${L(b)}`})}else throw m({token:y.token,errorMessage:`Expected a name for variadic parameter, got ${L(y)}`})}else C=se.type;let w=nr(x(C)),k={exprs:{expr:y,labelExpr:$,typeExpr:w},isCompileTimeOnly:h,isQuote:v,label:E,type:C,isOwningTheRcValue:!1,isImplicit:!1};if(a=k,E!=="..."){let{env:b}=Be({env:t,variable:{name:E,type:C,isCompileTimeOnly:k.isCompileTimeOnly,value:h?[oe(C,{variableName:E,env:t,context:n})]:void 0,token:$.token,initializedAtToken:$.token,consumedAtToken:void 0,isOwningTheRcValue:k.isOwningTheRcValue,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=b,$.$={env:t,type:C,value:h?oe(C,{variableName:E,env:t,context:n}):void 0,pathCollection:[]}}}else{if(l)throw m({token:y.token,errorMessage:"Expected variadic parameter to be the last parameter before the normal parameters."});let{parameter:h,env:v}=gf({expr:y,env:t,context:{...n},isParameterComptimeByDefault:!1,allowVariableShadowing:!0});if(r.find($=>$.label===h.label))throw m({token:S(y)?((d=y.args[0])==null?void 0:d.token)??y.token:y.token,errorMessage:`Duplicate label "${h.label}" in function parameter`});if(r.push(h),t=v,f.length>0){let $=Hy({pendingConstraints:f,env:t,context:n});t=$.env,f=$.pendingConstraints}}}}if(r.forEach((g,y)=>{if(g.isQuote&&Oo(g.type)&&y!==r.length-1)throw m({token:g.exprs.expr.token,errorMessage:"Expected ExprList type to be the last parameter."})}),f.length>0){let g=Hy({pendingConstraints:f,env:t,context:n});if(t=g.env,g.pendingConstraints.length>0){let y=g.pendingConstraints[0];hf({constraintExprs:[y.originalConstraintExpr],env:t,context:n,collectPendingTraits:!1})}}return{parameters:r,forallParameters:i,implicitParameters:o,variadicParameter:a,whereClauseExprs:s,env:t}}function xu({expr:e,env:t,context:n}){var $;if(!T(e,"->",2))throw m({token:e.token,errorMessage:`Expected -> for function type, got:
10746
+ `});let $=ue(t,o),C=$.length>0?$[$.length-1]:void 0,w=$.find(M=>{if(M.value&&Y(M.value[0])){let V=M.value[0];if(z(V.value))return!0}return!1}),k=E,b=f;if(w){let M=w.value[0],V=M.value;if(_&&Y(_)&&z(_.value)){let O=_.value,W=[...V.requiredTraits];for(let G of O.requiredTraits)W.some(U=>U.traitType.id===G.traitType.id)||W.push(G);let P=[...V.negativeTraits??[]];if(O.negativeTraits)for(let G of O.negativeTraits)P.some(U=>U.traitType.id===G.traitType.id)||P.push(G);V.requiredTraits=W,V.negativeTraits=P}k=M,b=Ln(V)}else if(C&&C.isCompileTimeOnly&&C.value&&C.frameLevel===t.frames.length-1)k=C.value[0],b=C.type;else{let{env:M}=Be({env:t,variable:{name:o,type:f,isCompileTimeOnly:a,value:_?[_]:a?[oe(f,{variableName:o,env:t,context:n})]:void 0,token:(u==null?void 0:u.token)??e.token,initializedAtToken:(u==null?void 0:u.token)??e.token,consumedAtToken:void 0,isOwningTheRcValue:l,isOwningTheSameRcValueAs:void 0,isReassignable:!1},allowVariableShadowing:i});t=M}return u&&(u.$={env:t,type:b,value:k,pathCollection:[]}),u!==e&&g!==e&&(e.$={env:t,type:se.type,value:se,pathCollection:[]}),wn(f),{parameter:{label:o,type:f,exprs:Qo({expr:e,labelExpr:y,typeExpr:g,defaultValueExpr:h,assignedValueExpr:v}),isCompileTimeOnly:a,isQuote:s,isOwningTheRcValue:l,isImplicit:!1,assignedValue:_},env:t}}function rb({constraintExprs:e,env:t,context:n}){let r=[];for(let i of e){if(!S(i)||!T(i,"<:",2))continue;let o=i.args[0];if(H(o)){let s=o.token.value;if(ue(t,s).length===0){let u=Or(Ht(),s,{env:t,context:n}),c=_e(u),{env:f}=Be({env:t,variable:{name:s,type:Ln(u),isCompileTimeOnly:!0,value:[c],token:o.token,initializedAtToken:o.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=f,o.$={env:t,type:Ln(u),value:c,pathCollection:[]}}}let a=hf({constraintExprs:[i],env:t,context:n,collectPendingTraits:!0});t=a.env,r.push(...a.pendingTraits)}return{env:t,pendingConstraints:r}}function Hy({pendingConstraints:e,env:t,context:n}){let r=[];for(let i of e){let o=ib({lhsExpr:i.lhsExpr,traitExpr:i.traitExpr,originalConstraintExpr:i.originalConstraintExpr,env:t,context:n});t=o.env,o.success||r.push(i)}return{env:t,pendingConstraints:r}}function jy({concreteType:e,traitExpr:t,isNegated:n,constraintExpr:r,env:i,context:o}){let a;try{a=R({expr:t,env:i,context:{...o}})}catch{return{env:i,success:!1}}if(!a.$||!a.$.value||!Y(a.$.value))return{env:i,success:!1};i=a.$.env;let s=a.$.value;if(!ht(s.value))throw m({token:t.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(s.value)}`});let l=s.value,u=Mn({targetType:e,traitType:l,env:i});if(n){if(u)throw m({token:r.token,errorMessage:`Type ${x(e)} must NOT implement ${x(l)}, but it does.`})}else if(!u)throw m({token:r.token,errorMessage:`Type ${x(e)} does not implement required trait ${x(l)}.`});return{env:i,success:!0}}function ib({lhsExpr:e,traitExpr:t,originalConstraintExpr:n,env:r,context:i}){let o=!1,a=t;S(t)&&T(t,"!")&&t.args.length===1&&(o=!0,a=t.args[0]);let s;if(H(e)){let f=e.token.value,p=ue(r,f);if(p.length===0)return{env:r,success:!1};let _=p[p.length-1];if(_.value&&Y(_.value[0])&&z(_.value[0].value))s=_.value[0].value;else if(_.value&&Y(_.value[0]))try{return jy({concreteType:_.value[0].value,traitExpr:a,isNegated:o,constraintExpr:n,env:r,context:i})}catch{return{env:r,success:!1}}else return{env:r,success:!1}}else{let f;try{f=R({expr:e,env:r,context:{...i}})}catch{return{env:r,success:!1}}if(!f.$||!f.$.value||!Y(f.$.value))return{env:r,success:!1};r=f.$.env;let p=f.$.value;if(!z(p.value))try{return jy({concreteType:p.value,traitExpr:a,isNegated:o,constraintExpr:n,env:r,context:i})}catch{return{env:r,success:!1}}s=p.value}let l;try{l=R({expr:a,env:r,context:{...i}})}catch{return{env:r,success:!1}}if(!l.$||!l.$.value||!Y(l.$.value))return{env:r,success:!1};r=l.$.env;let u=l.$.value;if(!ht(u.value))throw m({token:a.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(u.value)}`});let c=u.value;if(c.receiverType)throw m({token:a.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});return r=Ei({env:r,someType:s,traitType:c,isNegated:o}),{env:r,success:!0}}function hf({constraintExprs:e,env:t,context:n,collectPendingTraits:r=!1}){let i=[];for(let o of e){if(!S(o)||!T(o,"<:",2))throw m({token:o.token,errorMessage:`Expected constraint in the form "T <: Trait" or "T <: (Trait1, Trait2)", got: ${L(o)}`});let a=o.args[0],s=o.args[1],l;if(H(a)){let c=a.token.value,f=ue(t,c);if(f.length>0){let p=f[f.length-1];if(p.value&&Y(p.value[0])&&z(p.value[0].value))l=p.value[0].value;else if(p.value&&Y(p.value[0])){let _=p.value[0].value;t=Ky({concreteType:_,rhsExpr:s,constraintExpr:o,env:t,context:n});continue}else throw m({token:a.token,errorMessage:`Expected type for left-hand side of where clause constraint, got variable "${c}".`})}else{l=Or(Ht(),c,{env:t,context:n});let p=_e(l),{env:_}=Be({env:t,variable:{name:c,type:Ln(l),isCompileTimeOnly:!0,value:[p],token:a.token,initializedAtToken:a.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=_,a.$={env:t,type:Ln(l),value:p,pathCollection:[]}}}else{let c=R({expr:a,env:t,context:{...n}});if(!c.$||!c.$.value||!Y(c.$.value))throw m({token:a.token,errorMessage:"Expected type for left-hand side of where clause constraint."});t=c.$.env;let f=c.$.value;if(!z(f.value)){t=Ky({concreteType:f.value,rhsExpr:s,constraintExpr:o,env:t,context:n});continue}l=f.value}let u=[];S(s)&&T(s,D.tuple)?u.push(...s.args):u.push(s);for(let c=0;c<u.length;c++){let f=u[c],p=!1,_=f;S(f)&&T(f,"!")&&f.args.length===1&&(p=!0,_=f.args[0]);let d;try{d=R({expr:_,env:t,context:{...n}})}catch(h){if(r){i.push({lhsExpr:a,traitExpr:f,originalConstraintExpr:o});continue}throw h}if(!d.$||!d.$.value||!Y(d.$.value)){if(r){i.push({lhsExpr:a,traitExpr:f,originalConstraintExpr:o});continue}throw m({token:_.token,errorMessage:"Expected trait type for right-hand side of where clause constraint."})}t=d.$.env;let g=d.$.value;if(!ht(g.value))throw m({token:_.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(g.value)}`});let y=g.value;if(y.receiverType)throw m({token:_.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});t=Ei({env:t,someType:l,traitType:y,isNegated:p})}}return{env:t,pendingTraits:i}}function wo({constraintExprs:e,env:t,context:n}){return e.length===0?{env:t}:{env:hf({constraintExprs:e,env:t,context:n,collectPendingTraits:!1}).env}}function Ky({concreteType:e,rhsExpr:t,constraintExpr:n,env:r,context:i}){let o=[];if(S(t)&&T(t,D.tuple))for(let a of t.args)S(a)&&T(a,"!")&&a.args.length===1?o.push({expr:a.args[0],isNegated:!0}):o.push({expr:a,isNegated:!1});else S(t)&&T(t,"!")&&t.args.length===1?o.push({expr:t.args[0],isNegated:!0}):o.push({expr:t,isNegated:!1});for(let{expr:a,isNegated:s}of o){let l=R({expr:a,env:r,context:{...i}});if(!l.$||!l.$.value||!Y(l.$.value))throw m({token:a.token,errorMessage:"Expected trait type for right-hand side of where clause constraint."});r=l.$.env;let u=l.$.value;if(!ht(u.value))throw m({token:a.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(u.value)}`});let c=u.value,f=Mn({targetType:e,traitType:c,env:r});if(s){if(f)throw m({token:n.token,errorMessage:`Type ${x(e)} must NOT implement ${x(c)}, but it does.`})}else if(!f)throw m({token:n.token,errorMessage:`Type ${x(e)} does not implement required trait ${x(c)}.`})}return r}function vf({parameterExprs:e,env:t,context:n}){var p,_,d;t=Ct(t);let r=[],i=[],o=[],a,s,l=!1;if(e.length>0){let g=e[0];if(S(g)&&T(g,D.forall)){let y=g.args;for(let h=0;h<y.length;h++){let v=y[h];if(S(v)&&T(v,"...")&&v.args.length===1&&H(v.args[0])){let w=v.args[0].token.value;if(i.find(M=>M.label===w))throw m({token:v.token,errorMessage:`Duplicate label "${w}" in type parameter`});let b=Xo(w,t),A=Er(1),{env:I}=Be({env:t,variable:{name:w,type:A,isCompileTimeOnly:!0,value:[_e(b)],token:v.args[0].token,initializedAtToken:v.args[0].token,consumedAtToken:void 0,isOwningTheRcValue:!1}});t=I,v.$={env:t,type:A,value:_e(b),pathCollection:[]};let N={label:w,type:A,isCompileTimeOnly:!0,isQuote:!1,isOwningTheRcValue:!1,isImplicit:!1,isEffectRowSpread:!1,exprs:Qo({expr:v,labelExpr:v.args[0],typeExpr:v.args[0],defaultValueExpr:void 0,assignedValueExpr:void 0})};i.push(N);continue}let{parameter:E,env:$}=gf({expr:v,env:t,context:{...n},isParameterComptimeByDefault:!0,allowVariableShadowing:!0});if(i.find(w=>w.label===E.label))throw m({token:v.token,errorMessage:`Duplicate label "${E.label}" in type parameter`});i.push(E),t=$}}}let u=0;for(let g=0;g<e.length;g++){let y=e[g];if(S(y)&&T(y,D.using)){if(u++,u>1)throw m({token:y.token,errorMessage:'Only one "using(...)" clause is allowed per function signature. Combine all implicit parameters into a single using(), e.g.: using(a : TypeA, b : TypeB)'});let h=y.args;for(let v=0;v<h.length;v++){let E=h[v];if(S(E)&&T(E,"...")&&E.args.length===1&&H(E.args[0])){let M=E.args[0].token.value,O=ue(t,M).at(-1);if(!O)throw m({token:E.token,errorMessage:`Effect row variable "${M}" not found in scope. Declare it with forall(..., ...(${M}))`});let W,P=(p=O.value)==null?void 0:p[0];if(P&&Y(P)&&Xt(P.value)){let U=P.value;for(let X of U.implicitParameters)o.push({...X,isEffectRowSpread:!1});continue}else if(P&&Y(P)){if(!(z(P.value)&&P.value.isEffectsRow||Xt(P.value)))throw m({token:E.token,errorMessage:`"...(${M})" requires "${M}" to be a forall-declared effect row variable, but it resolves to a concrete type. Use individual effect types directly in using(), e.g. using(name : ${M}) instead of using(...(${M}))`});W=P.value}else if(P&&Ge(P)&&Xt(P.type)){let U=P.type;for(let X of U.implicitParameters)o.push({...X,isEffectRowSpread:!1});continue}else if(P&&Ge(P))W=Xo(M,t);else throw m({token:E.token,errorMessage:`Effect row variable "${M}" has invalid value. Expected a type.`});let G={label:M,type:W,isCompileTimeOnly:!0,isImplicit:!0,isEffectRowSpread:!0,isQuote:!1,isOwningTheRcValue:!1,exprs:Qo({expr:E,labelExpr:E.args[0],typeExpr:E.args[0],defaultValueExpr:void 0,assignedValueExpr:void 0})};o.push(G);continue}if(!(S(E)&&(T(E,":")||T(E,"=")||T(E,"?=")||T(E,":="))))throw m({token:E.token,errorMessage:'Implicit parameter requires a label. Use "using(name : Type)" instead of "using(Type)".'});let{parameter:C,env:w}=gf({expr:E,env:t,context:{...n},isParameterComptimeByDefault:!0,allowVariableShadowing:!0});if(i.find(M=>M.label===C.label))throw m({token:E.token,errorMessage:`Duplicate label "${C.label}" in implicit parameter (already in forall)`});if(o.find(M=>M.label===C.label))throw m({token:E.token,errorMessage:`Duplicate label "${C.label}" in implicit parameter`});let A={...C,isCompileTimeOnly:!0,isImplicit:!0};o.push(A);let N=w.frames[w.frames.length-1].variables.find(M=>M.name===C.label);N&&(N.isImplicit=!0),t=w}}}let c=new Set;for(let g=0;g<e.length;g++){let y=e[g];if(S(y)&&(T(y,D.forall)||T(y,D.using)||T(y,D.where)||T(y,"...")))continue;let h=nb(y);if(h){let v=R({expr:h.typeExpr,env:t,context:{...n}});if((_=v.$)!=null&&_.env&&(t=v.$.env),!v.$||!v.$.value||!Y(v.$.value))continue;let E=v.$.value.value,$=oe(E,{variableName:h.name,env:t,context:n}),{env:C}=Be({env:t,variable:{name:h.name,type:E,isCompileTimeOnly:!0,value:[$],token:h.token,initializedAtToken:h.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=C,c.add(g)}}let f=[];if(e.length>0){let g=e[e.length-1];if(S(g)&&T(g,D.where)){if(s=g.args,s.length===0)throw m({token:g.token,errorMessage:"The where clause must have at least one constraint."});let y=rb({constraintExprs:s,env:t,context:n});t=y.env,f=y.pendingConstraints}}for(let g=0;g<e.length;g++){let y=e[g];if(S(y)&&T(y,D.forall)){if(g!==0)throw m({token:y.token,errorMessage:`Expected type parameters to be the first argument, got ${g+1}`});continue}else{if(S(y)&&T(y,D.using))continue;if(S(y)&&T(y,D.where)){if(g!==e.length-1)throw m({token:y.token,errorMessage:"The where clause must be the last parameter in the function signature."});continue}else if(H(y)&&$n(y,"...")||S(y)&&T(y,"...")){l=!0;let h=!1,v=!1,E="...",$=y,C=se.type;if(S(y)){let b=y.args[0];if(b){if(S(b)&&T(b,D.comptime))throw h=!0,b.args.length!==1?m({token:b.token,errorMessage:`Expected one argument for "comptime" , got ${b.args.length}`}):($=b.args[0],E=b.args[0].token.value,C=se.type,m({token:b.token,errorMessage:"...(comptime(param_name)) is not supported yet."}));if(S(b)&&T(b,D.quote)){if(h=!0,v=!0,b.args.length!==1)throw m({token:b.token,errorMessage:`Expected one argument for "quote" (or ":"), got ${b.args.length}`});$=b.args[0],E=b.args[0].token.value,C=Ss()}else throw Dt(b)?($=b,E=b.token.value,C=se.type,m({token:b.token,errorMessage:"...(param_name) is not supported yet."})):m({token:b.token,errorMessage:`Expected a valid variable name for variadic parameter, got ${L(b)}`})}else throw m({token:y.token,errorMessage:`Expected a name for variadic parameter, got ${L(y)}`})}else C=se.type;let w=nr(x(C)),k={exprs:{expr:y,labelExpr:$,typeExpr:w},isCompileTimeOnly:h,isQuote:v,label:E,type:C,isOwningTheRcValue:!1,isImplicit:!1};if(a=k,E!=="..."){let{env:b}=Be({env:t,variable:{name:E,type:C,isCompileTimeOnly:k.isCompileTimeOnly,value:h?[oe(C,{variableName:E,env:t,context:n})]:void 0,token:$.token,initializedAtToken:$.token,consumedAtToken:void 0,isOwningTheRcValue:k.isOwningTheRcValue,isOwningTheSameRcValueAs:void 0,isReassignable:!1}});t=b,$.$={env:t,type:C,value:h?oe(C,{variableName:E,env:t,context:n}):void 0,pathCollection:[]}}}else{if(l)throw m({token:y.token,errorMessage:"Expected variadic parameter to be the last parameter before the normal parameters."});let{parameter:h,env:v}=gf({expr:y,env:t,context:{...n},isParameterComptimeByDefault:!1,allowVariableShadowing:!0});if(r.find($=>$.label===h.label))throw m({token:S(y)?((d=y.args[0])==null?void 0:d.token)??y.token:y.token,errorMessage:`Duplicate label "${h.label}" in function parameter`});if(r.push(h),t=v,f.length>0){let $=Hy({pendingConstraints:f,env:t,context:n});t=$.env,f=$.pendingConstraints}}}}if(r.forEach((g,y)=>{if(g.isQuote&&Oo(g.type)&&y!==r.length-1)throw m({token:g.exprs.expr.token,errorMessage:"Expected ExprList type to be the last parameter."})}),f.length>0){let g=Hy({pendingConstraints:f,env:t,context:n});if(t=g.env,g.pendingConstraints.length>0){let y=g.pendingConstraints[0];hf({constraintExprs:[y.originalConstraintExpr],env:t,context:n,collectPendingTraits:!1})}}return{parameters:r,forallParameters:i,implicitParameters:o,variadicParameter:a,whereClauseExprs:s,env:t}}function xu({expr:e,env:t,context:n}){var $;if(!T(e,"->",2))throw m({token:e.token,errorMessage:`Expected -> for function type, got:
10747
10747
  ${L(e)}
10748
10748
 
10749
10749
  Note: For closures, use Impl(Fn(...) -> ...) syntax.`});let r=e.args[0],i=e.args[1],o=[];if(S(r)&&(T(r,D.fn)||T(r,D.unsafe_fn)))o=r.args;else throw m({token:r.token,errorMessage:`Expected a "fn" or "unsafe_fn" call for parameter list, got:
10750
10750
  ${L(r)}`});let{parameters:a,forallParameters:s,implicitParameters:l,variadicParameter:u,whereClauseExprs:c,env:f}=vf({parameterExprs:o,env:t,context:{...n,isEvaluatingFunctionType:!0}});t=f;let p,_=!1,d=!1,g=i;if(S(i)&&T(i,":",2)){let C=i.args[0];if(g=i.args[1],S(C)&&T(C,D.comptime)){if(_=!0,C.args.length!==1)throw m({token:C.token,errorMessage:`Expected one argument for "comptime" , got ${C.args.length}`});C=C.args[0]}if(S(C)&&T(C,D.unquote)){if(d=!0,C.args.length!==1)throw m({token:C.token,errorMessage:`Expected one argument for "unquote", got ${C.args.length}`});if(_)throw m({token:C.token,errorMessage:'Cannot use "comptime" with "unquote". "unquote" return type means compile-time only, so "comptime" is redundant.'});_=!0,C=C.args[0]}if(S(C)&&T(C,D.quote))throw m({token:C.token,errorMessage:'To define a macro function, please use "unquote" for the return type, not "quote".'});if(!Dt(C))throw m({token:C.token,errorMessage:`Expected a valid variable name for return label, got ${L(C)}`});p=C.token.value}else{if(S(g)&&T(g,D.comptime)){if(_=!0,g.args.length!==1)throw m({token:g.token,errorMessage:`Expected one argument for "comptime" , got ${g.args.length}`});g=g.args[0]}if(S(g)&&T(g,D.unquote)){if(d=!0,g.args.length!==1)throw m({token:g.token,errorMessage:`Expected one argument for "unquote", got ${g.args.length}`});if(_)throw m({token:g.token,errorMessage:'Cannot use "comptime" with "unquote". "unquote" return type means compile-time only, so "comptime" is redundant.'});_=!0,g=g.args[0]}if(S(g)&&T(g,D.quote))throw m({token:g.token,errorMessage:'To define a macro function, please use "unquote" for the return type, not "quote".'})}let y=R({expr:g,env:t,context:{...n,isEvaluatingFunctionType:!0}}),h,v=($=y.$)==null?void 0:$.value;if(Y(v))h=v.value;else throw m({token:g.token,errorMessage:`Expected a type for function return type, got:
10751
- ${L(g)}`});if(Ai(h,t)&&!_&&(h=un({type:h,expectedType:void 0,expr:void 0,env:t}),Ai(h,t)))throw m({token:g.token,errorMessage:`Expected a "comptime" for return type, like:
10751
+ ${L(g)}`});if(Ii(h,t)&&!_&&(h=un({type:h,expectedType:void 0,expr:void 0,env:t}),Ii(h,t)))throw m({token:g.token,errorMessage:`Expected a "comptime" for return type, like:
10752
10752
 
10753
10753
  comptime(${L(g)})
10754
10754
 
10755
10755
  Given type:
10756
- ${x(h)}`});if(n.isUnsafeFunctionType||Hi(h,g.token),_&&Ii(h,t))throw m({token:g.token,errorMessage:`Unexpected "comptime" for return type of ${x(h)} which can only be used at runtime.`});if(_){for(let C of a)if(!C.isCompileTimeOnly)throw m({token:lp(C),errorMessage:"Expected all parameters to be compile time only given the return type is compile time only."})}if(d&&!Nn(h))throw m({token:g.token,errorMessage:`Expected Expr type for "unquote" return type, got ${x(h)}`});let E=jo({parameters:a,forallParameters:s,implicitParameters:l,variadicParameter:u,whereClauseExprs:c,return_:{type:h,typeExpr:g,isCompileTimeOnly:_,isUnquote:d,label:p??`fn_return_${Nt(t.modulePath)}`},env:nn(t,!0),parametersFrame:t.frames[t.frames.length-1],SelfType:n.SelfType,SelfTraitType:n.SelfTraitType,SelfModuleType:n.SelfModuleType});return t=nn(t,!0),e.$={env:t,value:_e(E),type:Ln(E),pathCollection:[]},e}function el({parameter:e,calleeEnv:t,context:n,definitionSiteEnclosingFunctionType:r,functionType:i}){var s,l,u,c,f,p;let o=e.exprs.typeExpr,a=e.exprs.defaultValueExpr;if(o){let _=r??(((s=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:s.kind)==="function-body"?n.isEvaluatingFunctionBodyOrAsyncBlock.type:void 0),d=R({expr:mt(o),env:t,context:{...n,expectedType:void 0,SelfType:i.SelfType,SelfTraitType:i.SelfTraitType??n.SelfTraitType,SelfModuleType:i.SelfModuleType??n.SelfModuleType,isEvaluatingFunctionBodyOrAsyncBlock:_?{kind:"function-body",type:_,evaluationEnv:t}:void 0}});if(!Y((l=d.$)==null?void 0:l.value))throw m({token:o.token,errorMessage:`Expected type for parameter, got:
10756
+ ${x(h)}`});if(n.isUnsafeFunctionType||Hi(h,g.token),_&&Si(h,t))throw m({token:g.token,errorMessage:`Unexpected "comptime" for return type of ${x(h)} which can only be used at runtime.`});if(_){for(let C of a)if(!C.isCompileTimeOnly)throw m({token:lp(C),errorMessage:"Expected all parameters to be compile time only given the return type is compile time only."})}if(d&&!Nn(h))throw m({token:g.token,errorMessage:`Expected Expr type for "unquote" return type, got ${x(h)}`});let E=jo({parameters:a,forallParameters:s,implicitParameters:l,variadicParameter:u,whereClauseExprs:c,return_:{type:h,typeExpr:g,isCompileTimeOnly:_,isUnquote:d,label:p??`fn_return_${Nt(t.modulePath)}`},env:nn(t,!0),parametersFrame:t.frames[t.frames.length-1],SelfType:n.SelfType,SelfTraitType:n.SelfTraitType,SelfModuleType:n.SelfModuleType});return t=nn(t,!0),e.$={env:t,value:_e(E),type:Ln(E),pathCollection:[]},e}function el({parameter:e,calleeEnv:t,context:n,definitionSiteEnclosingFunctionType:r,functionType:i}){var s,l,u,c,f,p;let o=e.exprs.typeExpr,a=e.exprs.defaultValueExpr;if(o){let _=r??(((s=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:s.kind)==="function-body"?n.isEvaluatingFunctionBodyOrAsyncBlock.type:void 0),d=R({expr:mt(o),env:t,context:{...n,expectedType:void 0,SelfType:i.SelfType,SelfTraitType:i.SelfTraitType??n.SelfTraitType,SelfModuleType:i.SelfModuleType??n.SelfModuleType,isEvaluatingFunctionBodyOrAsyncBlock:_?{kind:"function-body",type:_,evaluationEnv:t}:void 0}});if(!Y((l=d.$)==null?void 0:l.value))throw m({token:o.token,errorMessage:`Expected type for parameter, got:
10757
10757
  ${L(d)}`});return(u=d.$)!=null&&u.env&&(t=(c=d.$)==null?void 0:c.env),{parameterType:(f=d.$)==null?void 0:f.value.value,calleeEnv:t}}else if(a){let _=R({expr:mt(a),env:t,context:{...n,expectedType:void 0,SelfType:i.SelfType,SelfTraitType:i.SelfTraitType??n.SelfTraitType,SelfModuleType:i.SelfModuleType??n.SelfModuleType}});if(!_.$)throw m({token:a.token,errorMessage:`Failed to evaluate default value expression:
10758
- ${L(a)}`});return t=(p=_.$)==null?void 0:p.env,{parameterType:_.$.type,calleeEnv:t}}else return{parameterType:e.type,calleeEnv:t}}function ia({functionType:e,calleeEnv:t,context:n,functionCalleeExpr:r}){var l,u;let i=e.return,o=R({expr:mt(i.typeExpr),env:t,context:{...n,SelfType:e.SelfType,SelfTraitType:e.SelfTraitType??n.SelfTraitType,SelfModuleType:e.SelfModuleType??n.SelfModuleType}}),a,s=(l=o.$)==null?void 0:l.value;if(Y(s))a=s.value;else throw m({token:(r==null?void 0:r.token)??Ne,errorMessage:"Function body is not evaluated correctly. Expected to return a type."});return z(a)&&(a=Gn(t,a)),{returnType:a,calleeEnv:((u=o.$)==null?void 0:u.env)??t}}var io=j(()=>{ft();xe();ce();Ci();pn();Qt();dt();ui();Ae();gi();Je();xn();yn();ge();Ke();Gt();Sr()});function Xy({expr:e,env:t,context:n}){var p;let r=e.func,i=e.args;if(!H(r)||r.token.value!=="_")throw m({token:r.token,errorMessage:`Expected "_" for anonymous struct, got:
10758
+ ${L(a)}`});return t=(p=_.$)==null?void 0:p.env,{parameterType:_.$.type,calleeEnv:t}}else return{parameterType:e.type,calleeEnv:t}}function ia({functionType:e,calleeEnv:t,context:n,functionCalleeExpr:r}){var l,u;let i=e.return,o=R({expr:mt(i.typeExpr),env:t,context:{...n,SelfType:e.SelfType,SelfTraitType:e.SelfTraitType??n.SelfTraitType,SelfModuleType:e.SelfModuleType??n.SelfModuleType}}),a,s=(l=o.$)==null?void 0:l.value;if(Y(s))a=s.value;else throw m({token:(r==null?void 0:r.token)??Ne,errorMessage:"Function body is not evaluated correctly. Expected to return a type."});return z(a)&&(a=Gn(t,a)),{returnType:a,calleeEnv:((u=o.$)==null?void 0:u.env)??t}}var io=j(()=>{ft();xe();ce();ki();pn();Qt();dt();ui();Ae();gi();Je();xn();yn();ge();Ke();Gt();Sr()});function Xy({expr:e,env:t,context:n}){var p;let r=e.func,i=e.args;if(!H(r)||r.token.value!=="_")throw m({token:r.token,errorMessage:`Expected "_" for anonymous struct, got:
10759
10759
  ${L(r)}`});let o=Ho(t),a=o.fields,s=[],l=[];for(let _=0;_<i.length;_++){let d=i[_],g,y=d,h;if(S(d)&&T(d,":",2)){if(g=d.args[0],y=d.args[1],!Dt(g))throw m({token:g.token,errorMessage:`Expected identifier for anonymous struct field label, got:
10760
10760
  ${L(g)}`});h=g.token.value}{let v=R({expr:y,env:t,context:{...n,SelfType:o}});if(Yn(v,n),!v.$)throw m({token:y.token,errorMessage:`Failed to evaluate the anonymous struct field expression: ${L(y)}`});t=v.$.env;let E=v.$.type,$={exprs:{expr:y,labelExpr:void 0,typeExpr:void 0,defaultValueExpr:void 0,assignedValueExpr:y},type:E,label:h??`__field_${Nt(t.modulePath)}`};a.push($),l.push(v),v.$.value?s.push((p=v.$)==null?void 0:p.value):s.push(void 0),g&&(g.$=v.$)}}t=Yo({structType:o,env:t,context:n,errorToken:r.token});let u;u=s.some(_=>!_)?void 0:si(o,s);let c=_e(o);r.$={env:t,type:c.type,value:c,pathCollection:[]};let{env:f}=Be({env:t,variable:{name:o.id,type:c.type,value:[c],initializedAtToken:e.token,token:e.token,isCompileTimeOnly:!0,consumedAtToken:void 0,isOwningTheRcValue:!1}});return t=f,e.$={env:t,type:o,value:u,pathCollection:[],runtimeArgExprsInOrder:l},Ft(e,!0),e}var Qy=j(()=>{ft();xe();ce();dt();yn();ge();Ke();Kr();Sr()});function Zy({expr:e,env:t,context:n}){let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for Arc:
10761
10761
  ${L(r)}`});if(t=i.$.env,!Y(i.$.value))throw m({token:r.token,errorMessage:`Arc expects a type as argument, but got:
@@ -10766,12 +10766,12 @@ ${x(f)}`});let p=R({expr:u,env:o,context:{...a,expectedType:{type:_n(),env:o}}})
10766
10766
  ${L(u)}`});o=p.$.env;let _=p.$.type;if(!ie({type:_n(),env:o},{type:_,env:o}))throw m({token:u.token,errorMessage:`Expected usize for array end index, got:
10767
10767
  ${x(_)}`});if(n&&wt(c.$.value)&&wt(p.$.value)){let d=c.$.value.value,g=p.$.value.value,y=typeof d=="bigint"?Number(d):d,h=typeof g=="bigint"?Number(g):g;if(y<0||y>n.elements.length)throw m({token:l.token,errorMessage:`Slice start index out of bounds: ${y}. Expected index in range [0, ${n.elements.length}].`});if(h<y||h>n.elements.length)throw m({token:u.token,errorMessage:`Slice end index out of bounds: ${h}. Expected index in range [${y}, ${n.elements.length}].`});return{value:bl(s,[n],y,h),type:s,callerEnv:o}}if(r&&wt(c.$.value)&&wt(p.$.value)){let d=c.$.value.value,g=p.$.value.value,y=typeof d=="bigint"?Number(d):d,h=typeof g=="bigint"?Number(g):g,v=r.endIndex-r.startIndex;if(y<0||y>v)throw m({token:l.token,errorMessage:`Slice start index out of bounds: ${y}. Expected index in range [0, ${v}].`});if(h<y||h>v)throw m({token:u.token,errorMessage:`Slice end index out of bounds: ${h}. Expected index in range [${y}, ${v}].`});let E=r.startIndex+y,$=r.startIndex+h;return{value:bl(s,r.sourceArray,E,$),type:s,callerEnv:o}}return{value:void 0,type:s,callerEnv:o}}}else{let s=i[0],l=R({expr:s,env:o,context:{...a,expectedType:{type:_n(),env:o}}});if(!l.$)throw m({token:s.token,errorMessage:`Failed to evaluate argument expression:
10768
10768
  ${L(s)}`});o=l.$.env;let u=l.$.type;if(!ie({type:_n(),env:o},{type:u,env:o}))throw m({token:s.token,errorMessage:`Expected usize for array index, got:
10769
- ${x(u)}`});let c=t.childType;if(r)if(l.$.value)if(wt(l.$.value)){let f=l.$.value.value,p=typeof f=="bigint"?Number(f):f,_=r.endIndex-r.startIndex;if(p<0||p>=_)throw m({token:s.token,errorMessage:`Slice index out of bounds: ${p}. Expected index in range [0, ${_-1}].`});let d=r.startIndex+p,g=r.sourceArray[0];return{value:g.elements[d],index:p,arrayElementRef:{arrayValue:g,index:d},type:c,callerEnv:o}}else return{value:oe(c,{env:o,context:a}),type:c,callerEnv:o};else return{value:void 0,type:un({type:c,env:o}),callerEnv:o};if(n)if(l.$.value)if(wt(l.$.value)){let f=l.$.value.value,p=typeof f=="bigint"?Number(f):f;if(p<0||p>=n.elements.length)throw m({token:s.token,errorMessage:`Array index out of bounds: ${p}. Expected index in range [0, ${n.elements.length-1}].`});return{value:n.elements[p],index:p,arrayElementRef:{arrayValue:n,index:p},type:c,callerEnv:o}}else return{value:oe(c,{env:o,context:a}),type:c,callerEnv:o};else return{value:void 0,type:un({type:c,env:o}),callerEnv:o};else return{value:void 0,type:c,callerEnv:o}}}var tg=j(()=>{xe();ce();Qt();dt();Je();ge();Ke()});function ng({expr:e,arrayType:t,argExprs:n,callerEnv:r,context:i}){let o=t.length,a=t,s;if(wt(o)){if(s=Number(o.value),n.length!==s)throw m({token:e.func.token,errorMessage:`Array constructor expects ${s} elements, got ${n.length}.`})}else if(Ge(o)){s=n.length;let p=Fi(BigInt(s));a=xi(t.childType,p)}else throw m({token:e.func.token,errorMessage:`Array length must be a known number value or unknown (_), got ${o}.`});let l=[],u=r,c=a.childType;for(let p=0;p<n.length;p++){let _=n[p],d=R({expr:_,env:u,context:{...i,expectedType:{type:c,env:u}}});if(!d.$)throw m({token:_.token,errorMessage:`Failed to evaluate array element at index ${p}.`});if(Yn(d,i),u=d.$.env,p===0&&at(c)&&Ge(c.length)&&at(d.$.type)&&(c=d.$.type,a=xi(c,a.length)),!ie({type:c,env:u},{type:d.$.type,env:u}))throw m({token:_.token,errorMessage:`Array element at index ${p} has incompatible type:
10769
+ ${x(u)}`});let c=t.childType;if(r)if(l.$.value)if(wt(l.$.value)){let f=l.$.value.value,p=typeof f=="bigint"?Number(f):f,_=r.endIndex-r.startIndex;if(p<0||p>=_)throw m({token:s.token,errorMessage:`Slice index out of bounds: ${p}. Expected index in range [0, ${_-1}].`});let d=r.startIndex+p,g=r.sourceArray[0];return{value:g.elements[d],index:p,arrayElementRef:{arrayValue:g,index:d},type:c,callerEnv:o}}else return{value:oe(c,{env:o,context:a}),type:c,callerEnv:o};else return{value:void 0,type:un({type:c,env:o}),callerEnv:o};if(n)if(l.$.value)if(wt(l.$.value)){let f=l.$.value.value,p=typeof f=="bigint"?Number(f):f;if(p<0||p>=n.elements.length)throw m({token:s.token,errorMessage:`Array index out of bounds: ${p}. Expected index in range [0, ${n.elements.length-1}].`});return{value:n.elements[p],index:p,arrayElementRef:{arrayValue:n,index:p},type:c,callerEnv:o}}else return{value:oe(c,{env:o,context:a}),type:c,callerEnv:o};else return{value:void 0,type:un({type:c,env:o}),callerEnv:o};else return{value:void 0,type:c,callerEnv:o}}}var tg=j(()=>{xe();ce();Qt();dt();Je();ge();Ke()});function ng({expr:e,arrayType:t,argExprs:n,callerEnv:r,context:i}){let o=t.length,a=t,s;if(wt(o)){if(s=Number(o.value),n.length!==s)throw m({token:e.func.token,errorMessage:`Array constructor expects ${s} elements, got ${n.length}.`})}else if(Ge(o)){s=n.length;let p=Li(BigInt(s));a=Vi(t.childType,p)}else throw m({token:e.func.token,errorMessage:`Array length must be a known number value or unknown (_), got ${o}.`});let l=[],u=r,c=a.childType;for(let p=0;p<n.length;p++){let _=n[p],d=R({expr:_,env:u,context:{...i,expectedType:{type:c,env:u}}});if(!d.$)throw m({token:_.token,errorMessage:`Failed to evaluate array element at index ${p}.`});if(Yn(d,i),u=d.$.env,p===0&&at(c)&&Ge(c.length)&&at(d.$.type)&&(c=d.$.type,a=Vi(c,a.length)),!ie({type:c,env:u},{type:d.$.type,env:u}))throw m({token:_.token,errorMessage:`Array element at index ${p} has incompatible type:
10770
10770
  - Expected: ${x(c)}
10771
10771
  - Given : ${x(d.$.type)}`});d.$.value!==void 0?l.push(d.$.value):l.push(oe(c,{env:u,context:i}))}let f=mo(a,l);return e.$={env:u,value:f,type:a,pathCollection:[]},e}var rg=j(()=>{xe();ce();Qt();dt();Ae();Je();ge();Ke()});function ig({capturedVariables:e,env:t,closureToken:n}){let r=t;for(let[i,o]of e.entries())if(o.frameLevel<t.frames.length&&o.usageType==="own"){let a=ue(r,i);if(a.length>0){let s=a[a.length-1];s.consumedAtToken||(r=It(r,s,{...s,consumedAtToken:n}))}}return r}function Za(e){let t=[];for(let[n]of e.entries())t.push([n]);return t}function Vu({wrapperType:e,captureType:t,env:n,errorToken:r}){for(let{traitType:i}of e.requiredTraits)if(!wn(i)&&!Mn({targetType:t,traitType:i,env:n})){let o=t.fields.filter(l=>!Mn({targetType:l.type,traitType:i,env:n})),a=x(i),s=o.map(l=>`\`${l.label}\` has type \`${x(l.type)}\` which does not implement \`${a}\``).join(`
10772
- `);throw m({token:r,errorMessage:`Closure does not implement \`${a}\` because captured variable ${s}`})}}function Du({expectedCaptureType:e,capturedVariablesWithValues:t,env:n,closureToken:r,context:i}){let o=e,a;if(o===void 0)if(t&&t.size>0){let s=Ho(n),l=Array.from(t.entries()).map(([c,f])=>({label:c,type:f.type,isCompileTimeOnly:!1,assignedValue:void 0,isEffectParam:f.isEffectParam||void 0,exprs:{expr:{tag:"Atom",token:f.token},labelExpr:void 0,typeExpr:void 0,defaultValueExpr:void 0}}));s.fields=l,o=s,n=Yo({structType:s,env:n,context:{...i},errorToken:r});let u=Array.from(t.values()).map(c=>c.value);u.every(c=>c!==void 0)?a=si(s,u):a=void 0}else{let s=Ho(n);s.fields=[],n=Yo({structType:s,env:n,context:{...i},errorToken:r}),o=s,a=si(s,[])}else if(t&&t.size>0){let s=o,l=Array.from(t.keys()),u=s.fields.map(f=>f.label);for(let f of l)if(!u.includes(f))throw m({token:r,errorMessage:`Captured variable "${f}" does not exist in expected capture struct "${x(s)}"`});for(let f of s.fields)if(!l.includes(f.label))throw m({token:r,errorMessage:`Expected capture struct field "${f.label}" is not captured by this closure`});for(let[f,p]of t.entries()){let _=s.fields.find(d=>d.label===f);if(_&&!ie({type:_.type,env:n},{type:p.type,env:n}))throw m({token:p.token,errorMessage:`Captured variable "${f}" has type "${x(p.type)}" but expected struct field has type "${x(_.type)}"`})}let c=Array.from(t.values()).map(f=>f.value);c.every(f=>f!==void 0)?a=si(o,c):a=void 0}else a=si(o,[]);return{captureType:o,captureValue:a}}function Mu({capturedVariables:e,env:t}){var r;let n=new Map;for(let[i,o]of e.entries())if(o.frameLevel<t.frames.length){let s=t.frames[o.frameLevel].variables.find(l=>l.name===i);s&&!s.isCompileTimeOnly&&n.set(i,{...o,value:(r=s.value)==null?void 0:r[0],type:s.type})}return n}function Ou({capturedVariablesWithValues:e,env:t,context:n}){let r=[],i=t;if(e&&e.size>0){for(let[o,a]of e.entries())if(ut(a.type)){let s=nr(`${F.___dup[0]}(${o})`),l=R({expr:s,env:i,context:{...n}});r.push(l),l.$&&l.$.env&&(i=l.$.env)}}return{capturedVariableDupExpressions:r.length>0?r:void 0,env:i}}var Ru=j(()=>{ft();xe();ce();Ci();Qt();dt();Ae();Je();ge();Ke();Gt();Kr()});function Ef({functionBodyExpr:e,functionType:t,functionValue:n,env:r,context:i}){var a,s,l;if(!lt(t.return.type))return;let o;try{let u=mt(e),c=Ja({...i,capturedVariables:void 0},t,{...n},r),f=gn({expr:u,env:r,context:c.evaluationContext,variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0});if(o=(a=f.$)==null?void 0:a.type,Kt((s=f.$)==null?void 0:s.controlFlow,"escape")&&!Kt((l=f.$)==null?void 0:l.controlFlow,"return"))return}catch{return}if(o&&!ie({type:t.return.type,env:r},{type:o,env:r},!0))throw m({token:t.return.typeExpr.token,errorMessage:`Incompatible function return type for:
10772
+ `);throw m({token:r,errorMessage:`Closure does not implement \`${a}\` because captured variable ${s}`})}}function Du({expectedCaptureType:e,capturedVariablesWithValues:t,env:n,closureToken:r,context:i}){let o=e,a;if(o===void 0)if(t&&t.size>0){let s=Ho(n),l=Array.from(t.entries()).map(([c,f])=>({label:c,type:f.type,isCompileTimeOnly:!1,assignedValue:void 0,isEffectParam:f.isEffectParam||void 0,exprs:{expr:{tag:"Atom",token:f.token},labelExpr:void 0,typeExpr:void 0,defaultValueExpr:void 0}}));s.fields=l,o=s,n=Yo({structType:s,env:n,context:{...i},errorToken:r});let u=Array.from(t.values()).map(c=>c.value);u.every(c=>c!==void 0)?a=si(s,u):a=void 0}else{let s=Ho(n);s.fields=[],n=Yo({structType:s,env:n,context:{...i},errorToken:r}),o=s,a=si(s,[])}else if(t&&t.size>0){let s=o,l=Array.from(t.keys()),u=s.fields.map(f=>f.label);for(let f of l)if(!u.includes(f))throw m({token:r,errorMessage:`Captured variable "${f}" does not exist in expected capture struct "${x(s)}"`});for(let f of s.fields)if(!l.includes(f.label))throw m({token:r,errorMessage:`Expected capture struct field "${f.label}" is not captured by this closure`});for(let[f,p]of t.entries()){let _=s.fields.find(d=>d.label===f);if(_&&!ie({type:_.type,env:n},{type:p.type,env:n}))throw m({token:p.token,errorMessage:`Captured variable "${f}" has type "${x(p.type)}" but expected struct field has type "${x(_.type)}"`})}let c=Array.from(t.values()).map(f=>f.value);c.every(f=>f!==void 0)?a=si(o,c):a=void 0}else a=si(o,[]);return{captureType:o,captureValue:a}}function Mu({capturedVariables:e,env:t}){var r;let n=new Map;for(let[i,o]of e.entries())if(o.frameLevel<t.frames.length){let s=t.frames[o.frameLevel].variables.find(l=>l.name===i);s&&!s.isCompileTimeOnly&&n.set(i,{...o,value:(r=s.value)==null?void 0:r[0],type:s.type})}return n}function Ou({capturedVariablesWithValues:e,env:t,context:n}){let r=[],i=t;if(e&&e.size>0){for(let[o,a]of e.entries())if(ut(a.type)){let s=nr(`${F.___dup[0]}(${o})`),l=R({expr:s,env:i,context:{...n}});r.push(l),l.$&&l.$.env&&(i=l.$.env)}}return{capturedVariableDupExpressions:r.length>0?r:void 0,env:i}}var Ru=j(()=>{ft();xe();ce();ki();Qt();dt();Ae();Je();ge();Ke();Gt();Kr()});function Ef({functionBodyExpr:e,functionType:t,functionValue:n,env:r,context:i}){var a,s,l;if(!lt(t.return.type))return;let o;try{let u=mt(e),c=Ja({...i,capturedVariables:void 0},t,{...n},r),f=gn({expr:u,env:r,context:c.evaluationContext,variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0});if(o=(a=f.$)==null?void 0:a.type,Kt((s=f.$)==null?void 0:s.controlFlow,"escape")&&!Kt((l=f.$)==null?void 0:l.controlFlow,"return"))return}catch{return}if(o&&!ie({type:t.return.type,env:r},{type:o,env:r},!0))throw m({token:t.return.typeExpr.token,errorMessage:`Incompatible function return type for:
10773
10773
  - Expected: ${x(t.return.type)}
10774
- - Given : ${x(o)}`})}function Ja(e,t,n,r){let i={kind:"function-body",type:t,value:n,evaluationEnv:r},o=new Map,a;if(e.isEvaluatingFunctionBodyOrAsyncBlock){let l=e.isEvaluatingFunctionBodyOrAsyncBlock;l.kind==="function-body"?a=l.type.return.type:a=Qr()}return{evaluationContext:{...e,isExecuting:!1,isValidatingFunctionDefinition:!0,isEvaluatingFunctionBodyOrAsyncBlock:i,isEvaluatingFunctionType:!1,isEvaluatingLoopBody:void 0,capturedVariables:o,expectedType:{type:t.return.type,env:r},functionReturnImplConcreteType:[],enclosingFunctionReturnType:a,isInsideGivenHandler:e.isInsideGivenHandler,forceCompileTimeBindings:!1,isAnalyzingCtfeCapability:!1},functionBodyContext:i}}function og({expr:e,functionType:t,callerEnv:n,context:r}){var w,k,b,A;let i=e.func,o=e.args;if(o.length!==1)throw m({token:i.token,errorMessage:`Failed to implement the function. Expected 1 argument for the function body, got ${o.length}.`});let a=o[0],s=!1,l=(w=r.expectedType)==null?void 0:w.type,u=l&&te(l)&&l.parameters.length===t.parameters.length&&l.parameters.some((I,N)=>I.label!==t.parameters[N].label),c=Ct(s?n:Eu(n));if(u&&l&&te(l)){for(let I of t.forallParameters){let{env:N}=Be({env:c,variable:{name:I.label,type:I.type,isCompileTimeOnly:!0,value:[oe(I.type,{variableName:I.label,env:c,context:r})],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});c=N}for(let I=0;I<t.parameters.length;I++){let N=t.parameters[I],M=l.parameters[I],V=N.label,O=M.label,{env:W}=Be({env:c,variable:{name:V,type:N.type,isCompileTimeOnly:N.isCompileTimeOnly,value:N.isCompileTimeOnly?[oe(N.type,{variableName:O,env:c,context:r})]:void 0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:N.isOwningTheRcValue,parameterAlias:V!==O?O:void 0}});c=W}}else c=Ct(c,t.parametersFrame);let f=c.frames[c.frames.length-1],p={...t,parametersFrame:f,env:t.env},_={tag:"Function",type:p,body:a,frameLevel:c.frames.length-1,funcName:void 0,funcId:`fn_${Nt(c.modulePath)}`,definitionSiteEnclosingFunctionType:((k=r.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:k.kind)==="function-body"?r.isEvaluatingFunctionBodyOrAsyncBlock.type:void 0,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]};if((b=p.whereClauseExprs)!=null&&b.length){let I=p.whereClauseExprs.map(M=>mt(M));c=wo({constraintExprs:I,env:c,context:{...r,isEvaluatingFunctionType:!0}}).env}let d=p.forallParameters.length>0||p.parameters.some(I=>lt(I.type))||p.SelfType&&lt(p.SelfType),g,y;if(d)Ef({functionBodyExpr:a,functionType:p,functionValue:_,env:c,context:r}),a.$={env:c,type:t.return.type,value:t.return.isCompileTimeOnly?oe(t.return.type,{variableName:"function_body",env:c,context:r}):void 0,pathCollection:[]},y={...r,capturedVariables:void 0},g=a;else{if(y=Ja({...r,capturedVariables:void 0},p,_,c).evaluationContext,g=gn({expr:a,env:c,context:y,variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),!g.$)throw m({token:a.token,errorMessage:"Failed to evaluate the function body."});c=g.$.env}let h=y.capturedVariables,v=(A=g.$)==null?void 0:A.type;if(vi(g)&&(_.isControlFunction=!0),!_.isControlFunction&&v&&!ie({type:p.return.type,env:c},{type:v,env:c}))throw m({token:p.return.typeExpr.token,errorMessage:`Incompatible function return type for:
10774
+ - Given : ${x(o)}`})}function Ja(e,t,n,r){let i={kind:"function-body",type:t,value:n,evaluationEnv:r},o=new Map,a;if(e.isEvaluatingFunctionBodyOrAsyncBlock){let l=e.isEvaluatingFunctionBodyOrAsyncBlock;l.kind==="function-body"?a=l.type.return.type:a=Qr()}return{evaluationContext:{...e,isExecuting:!1,isValidatingFunctionDefinition:!0,isEvaluatingFunctionBodyOrAsyncBlock:i,isEvaluatingFunctionType:!1,isEvaluatingLoopBody:void 0,capturedVariables:o,expectedType:{type:t.return.type,env:r},functionReturnImplConcreteType:[],enclosingFunctionReturnType:a,isInsideGivenHandler:e.isInsideGivenHandler,forceCompileTimeBindings:!1,isAnalyzingCtfeCapability:!1},functionBodyContext:i}}function og({expr:e,functionType:t,callerEnv:n,context:r}){var w,k,b,A;let i=e.func,o=e.args;if(o.length!==1)throw m({token:i.token,errorMessage:`Failed to implement the function. Expected 1 argument for the function body, got ${o.length}.`});let a=o[0],s=!1,l=(w=r.expectedType)==null?void 0:w.type,u=l&&te(l)&&l.parameters.length===t.parameters.length&&l.parameters.some((I,N)=>I.label!==t.parameters[N].label),c=Ct(s?n:Eu(n));if(u&&l&&te(l)){for(let I of t.forallParameters){let{env:N}=Be({env:c,variable:{name:I.label,type:I.type,isCompileTimeOnly:!0,value:[oe(I.type,{variableName:I.label,env:c,context:r})],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1}});c=N}for(let I=0;I<t.parameters.length;I++){let N=t.parameters[I],M=l.parameters[I],V=N.label,O=M.label,{env:W}=Be({env:c,variable:{name:V,type:N.type,isCompileTimeOnly:N.isCompileTimeOnly,value:N.isCompileTimeOnly?[oe(N.type,{variableName:O,env:c,context:r})]:void 0,token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:N.isOwningTheRcValue,parameterAlias:V!==O?O:void 0}});c=W}}else c=Ct(c,t.parametersFrame);let f=c.frames[c.frames.length-1],p={...t,parametersFrame:f,env:t.env},_={tag:"Function",type:p,body:a,frameLevel:c.frames.length-1,funcName:void 0,funcId:`fn_${Nt(c.modulePath)}`,definitionSiteEnclosingFunctionType:((k=r.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:k.kind)==="function-body"?r.isEvaluatingFunctionBodyOrAsyncBlock.type:void 0,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]};if((b=p.whereClauseExprs)!=null&&b.length){let I=p.whereClauseExprs.map(M=>mt(M));c=wo({constraintExprs:I,env:c,context:{...r,isEvaluatingFunctionType:!0}}).env}let d=p.forallParameters.length>0||p.parameters.some(I=>lt(I.type))||p.SelfType&&lt(p.SelfType),g,y;if(d)Ef({functionBodyExpr:a,functionType:p,functionValue:_,env:c,context:r}),a.$={env:c,type:t.return.type,value:t.return.isCompileTimeOnly?oe(t.return.type,{variableName:"function_body",env:c,context:r}):void 0,pathCollection:[]},y={...r,capturedVariables:void 0},g=a;else{if(y=Ja({...r,capturedVariables:void 0},p,_,c).evaluationContext,g=gn({expr:a,env:c,context:y,variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),!g.$)throw m({token:a.token,errorMessage:"Failed to evaluate the function body."});c=g.$.env}let h=y.capturedVariables,v=(A=g.$)==null?void 0:A.type;if(Ti(g)&&(_.isControlFunction=!0),!_.isControlFunction&&v&&!ie({type:p.return.type,env:c},{type:v,env:c}))throw m({token:p.return.typeExpr.token,errorMessage:`Incompatible function return type for:
10775
10775
  - Expected: ${x(p.return.type)}
10776
10776
  - Given : ${x(v)}`});if(z(p.return.type)&&!p.return.type.resolvedConcreteType&&(z(v)?z(v)&&v.resolvedConcreteType&&(p.return.type.resolvedConcreteType=v.resolvedConcreteType):p.return.type.resolvedConcreteType=v),p.return.isCompileTimeOnly&&g.$&&!g.$.value)throw m({token:p.return.typeExpr.token,errorMessage:"Expected to return a compile-time value, but got runtime value."});c=nn(c,!0);let E=n;s&&h&&h.size>0&&(E=ig({capturedVariables:h,env:n,closureToken:e.token}));let $=_,C=p;if(r.isAnalyzingCtfeCapability||r.forceCompileTimeBindings){let I=ja(_,E,r);I&&($=I,C=I.type)}return e.$={env:E,value:$,type:C,pathCollection:h&&h.size>0?Za(h):[]},e}var Pu=j(()=>{ft();xe();ce();Zo();pn();Qt();dt();Ae();Je();yn();ge();_r();Lu();fi();io();Ru()});function ag({expr:e,fnModuleType:t,wrapperType:n,callerEnv:r,context:i}){var $,C;let o=e.func,a=e.args;if(a.length!==1)throw m({token:o.token,errorMessage:`Fn module type expects exactly 1 argument (the closure body), got ${a.length}`});let s=a[0],l=Ct(r,t.isFn.callType.parametersFrame);if(($=t.isFn.callType.whereClauseExprs)!=null&&$.length){let w=t.isFn.callType.whereClauseExprs.map(b=>mt(b));l=wo({constraintExprs:w,env:l,context:{...i,isEvaluatingFunctionType:!0}}).env}let u={tag:"Function",type:t.isFn.callType,body:s,frameLevel:l.frames.length-1,funcName:void 0,funcId:`closure_${Nt(l.modulePath)}`,definitionSiteEnclosingFunctionType:((C=i.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:C.kind)==="function-body"?i.isEvaluatingFunctionBodyOrAsyncBlock.type:void 0,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},{evaluationContext:c}=Ja(i,t.isFn.callType,u,l),f=gn({expr:s,env:l,context:c,variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0});if(!f.$)throw m({token:s.token,errorMessage:"Failed to evaluate the closure body."});l=f.$.env;let p=c.capturedVariables,_=f.$.type;if(!ie({type:t.isFn.callType.return.type,env:l},{type:_,env:l}))throw m({token:t.isFn.callType.return.typeExpr.token,errorMessage:`Incompatible closure return type:
10777
10777
  - Expected: ${x(t.isFn.callType.return.type)}
@@ -10784,11 +10784,11 @@ ${L(f)}`});let V=f.token.value;if(n.label==="")throw m({token:f.token,errorMessa
10784
10784
  ${x(p)}`});else{let V=e.ioBuiltin==="io_await"||e.ioBuiltin==="io_state"||e.ioBuiltin==="io_spawn"||e.ioBuiltin==="join_handle_await"?void 0:{type:p,env:o};if(d=R({expr:c,env:a,context:{...s,expectedType:V}}),(k=d.$)!=null&&k.env&&(a=(b=d.$)==null?void 0:b.env),n.isCompileTimeOnly||u.push(d),Bo(d,a),n.isOwningTheRcValue&&!n.isCompileTimeOnly){let O=(A=d.$)==null?void 0:A.variableName,W=O?ue(a,O):[],P=W.length?W[W.length-1]:void 0;P!=null&&P.isOwningTheRcValue?a=Cr(d,a,!0):(Yn(d,s),(I=d.$)!=null&&I.env&&(a=d.$.env),a=Cr(d,a,!0))}}if(!d.$)throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:"Failed to evaluate argument expression."});let g=d.$.type;if(!((N=d.$)!=null&&N.value)&&n.isCompileTimeOnly)throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:`Cannot assign runtime argument to compile-time parameter:
10785
10785
  ${c?L(c):""}`});if(n.assignedValue&&((M=d.$)!=null&&M.value)&&!Vn({value:n.assignedValue,env:o},{value:d.$.value,env:a}))throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:`Value mismatch for parameter "${n.label}":
10786
10786
  Expected: ${vt(n.assignedValue)}
10787
- Got: ${vt(d.$.value)}`});let y=d.$.value;if(!n.isCompileTimeOnly&&Uo(g,d.$.env)&&(s.forceCompileTimeBindings||(y=void 0),g=un({type:g,expectedType:p,expr:d,env:d.$.env}),Ai(g,d.$.env)))throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:`Cannot convert compile-time type to runtime type for argument:
10788
- ${L(d)}`});let h=n.isCompileTimeOnly||s.forceCompileTimeBindings===!0,{env:v}=Be({env:o,variable:{name:n.label,type:g,isCompileTimeOnly:h,value:y?[y]:void 0,token:(c==null?void 0:c.token)??Ne,initializedAtToken:(c==null?void 0:c.token)??Ne,consumedAtToken:void 0,isOwningTheRcValue:n.isOwningTheRcValue}});if(o=v,y&&Y(y)&&z(y.value)){let V=y.value,O=ci(a,V);if(O){for(let W of O.requiredTraits){let P={...W,receiverType:V};o=Ti({env:o,someType:V,traitType:P,isNegated:!1})}for(let W of O.negativeTraits){let P={...W,receiverType:V};o=Ti({env:o,someType:V,traitType:P,isNegated:!0})}}}try{let{expectedEnv:V}=Ut({type:p,env:o},{type:g,env:a});o=V}catch(V){throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:`Failed to synthesize types for parameter "${n.label}":
10787
+ Got: ${vt(d.$.value)}`});let y=d.$.value;if(!n.isCompileTimeOnly&&Uo(g,d.$.env)&&(s.forceCompileTimeBindings||(y=void 0),g=un({type:g,expectedType:p,expr:d,env:d.$.env}),Ii(g,d.$.env)))throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:`Cannot convert compile-time type to runtime type for argument:
10788
+ ${L(d)}`});let h=n.isCompileTimeOnly||s.forceCompileTimeBindings===!0,{env:v}=Be({env:o,variable:{name:n.label,type:g,isCompileTimeOnly:h,value:y?[y]:void 0,token:(c==null?void 0:c.token)??Ne,initializedAtToken:(c==null?void 0:c.token)??Ne,consumedAtToken:void 0,isOwningTheRcValue:n.isOwningTheRcValue}});if(o=v,y&&Y(y)&&z(y.value)){let V=y.value,O=ci(a,V);if(O){for(let W of O.requiredTraits){let P={...W,receiverType:V};o=Ei({env:o,someType:V,traitType:P,isNegated:!1})}for(let W of O.negativeTraits){let P={...W,receiverType:V};o=Ei({env:o,someType:V,traitType:P,isNegated:!0})}}}try{let{expectedEnv:V}=Ut({type:p,env:o},{type:g,env:a});o=V}catch(V){throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:`Failed to synthesize types for parameter "${n.label}":
10789
10789
  ${V.message}`})}let{parameterType:E,calleeEnv:$}=el({functionType:e,definitionSiteEnclosingFunctionType:t,parameter:n,calleeEnv:o,context:{...s,isEvaluatingFunctionType:!0}});if(o=$,!ie({type:E,env:o},{type:g,env:a},i===0&&l))throw m({token:(c==null?void 0:c.token)??Ne,errorMessage:`Type mismatch for parameter "${n.label}":
10790
10790
  Expected: ${x(E)}
10791
- Got: ${x(g)}`});return{calleeEnv:o,callerEnv:a,context:{...s},argValue:y,argType:g,parameterType:E}}function es(e){if(e&&$e(e))return e}function Uu(e){let t=process.env[e];return t==="1"||(t==null?void 0:t.toLowerCase())==="true"}function Fo({expr:e,functionValue:t,functionType:n,functionCalleeExpr:r,argExprs:i,callerEnv:o,context:a,isMethodCall:s,skipSpecialization:l,skipCtfeExecution:u}){var me,ke,Fe,yt,le,Ee,ne,Ie,je,it,Mt,K,J,ae,Se,De,Re,Xe,nt,Wt,ar,Tt,sn,Dr,kt,hn,vn,Bn,kn;if(zu){Ui.tryCallCount++;let Te="(unknown)";t&&"funcName"in t&&t.funcName?Te=t.funcName:t&&"funcId"in t?Te=String(t.funcId):r&&(Te=L(r).slice(0,60)),Ui.tryCallNames.set(Te,(Ui.tryCallNames.get(Te)??0)+1),Ui.tryCallCount<=5&&console.log(`[DEBUG tryCall] #${Ui.tryCallCount}: name=${Te}, hasFuncValue=${!!t}, hasFuncCalleeExpr=${!!r}`)}t&&(t.specializedType?n=t.specializedType:n=t.type);let c,f=[],p=[],_=[],d=t==null?void 0:t.definitionSiteEnclosingFunctionType,g=0;i.length>0&&S(i[0])&&T(i[0],D.forall)&&(c=i[0],g=1);let y,h=i.slice(g),v=h.findIndex(Te=>S(Te)&&T(Te,D.using));if(v!==-1){let Te=h.findIndex((be,we)=>we>v&&S(be)&&T(be,D.using));if(Te!==-1)throw m({token:h[Te].token,errorMessage:'Only one "using(...)" is allowed per function call. Combine all implicit arguments into a single using(), e.g.: func(..., using(a, b))'});y=h[v],h=[...h.slice(0,v),...h.slice(v+1)]}let E=n.parameters.length,$=h;if(!n.variadicParameter){if($.length>E){let Te=n.parameters.at(-1);if(!(Te&&Te.isQuote&&Oo(Te.type)))throw m({token:(r==null?void 0:r.token)??Ne,errorMessage:`Too many arguments for function call:
10791
+ Got: ${x(g)}`});return{calleeEnv:o,callerEnv:a,context:{...s},argValue:y,argType:g,parameterType:E}}function es(e){if(e&&$e(e))return e}function Uu(e){let t=process.env[e];return t==="1"||(t==null?void 0:t.toLowerCase())==="true"}function Fo({expr:e,functionValue:t,functionType:n,functionCalleeExpr:r,argExprs:i,callerEnv:o,context:a,isMethodCall:s,skipSpecialization:l,skipCtfeExecution:u}){var me,ke,Fe,yt,le,Ee,ne,Ie,je,it,Mt,K,J,ae,Se,De,Re,Xe,nt,Wt,ar,Tt,sn,Dr,kt,hn,vn,Bn,kn;if(zu){zi.tryCallCount++;let Te="(unknown)";t&&"funcName"in t&&t.funcName?Te=t.funcName:t&&"funcId"in t?Te=String(t.funcId):r&&(Te=L(r).slice(0,60)),zi.tryCallNames.set(Te,(zi.tryCallNames.get(Te)??0)+1),zi.tryCallCount<=5&&console.log(`[DEBUG tryCall] #${zi.tryCallCount}: name=${Te}, hasFuncValue=${!!t}, hasFuncCalleeExpr=${!!r}`)}t&&(t.specializedType?n=t.specializedType:n=t.type);let c,f=[],p=[],_=[],d=t==null?void 0:t.definitionSiteEnclosingFunctionType,g=0;i.length>0&&S(i[0])&&T(i[0],D.forall)&&(c=i[0],g=1);let y,h=i.slice(g),v=h.findIndex(Te=>S(Te)&&T(Te,D.using));if(v!==-1){let Te=h.findIndex((be,we)=>we>v&&S(be)&&T(be,D.using));if(Te!==-1)throw m({token:h[Te].token,errorMessage:'Only one "using(...)" is allowed per function call. Combine all implicit arguments into a single using(), e.g.: func(..., using(a, b))'});y=h[v],h=[...h.slice(0,v),...h.slice(v+1)]}let E=n.parameters.length,$=h;if(!n.variadicParameter){if($.length>E){let Te=n.parameters.at(-1);if(!(Te&&Te.isQuote&&Oo(Te.type)))throw m({token:(r==null?void 0:r.token)??Ne,errorMessage:`Too many arguments for function call:
10792
10792
  Expected: ${E} arguments
10793
10793
  Got: ${$.length} arguments`})}else if($.length<E&&!n.parameters.slice($.length).every(be=>be.exprs.defaultValueExpr!==void 0))throw m({token:(r==null?void 0:r.token)??Ne,errorMessage:`Too few arguments for function call:
10794
10794
  Expected: ${E} arguments
@@ -10808,8 +10808,8 @@ Or pass it explicitly:
10808
10808
  ${(t==null?void 0:t.funcName)??"func"}(..., using(<value>))`});if(Me[Me.length-1].isFromEffectSpread&&!(()=>{if(!r||!H(r))return!1;let Ze=r.token.value,tt=a.isEvaluatingFunctionBodyOrAsyncBlock;return!tt||tt.kind!=="function-body"?!1:tt.type.parameters.some(bt=>bt.label===Ze)})())throw m({token:(r==null?void 0:r.token)??(e==null?void 0:e.token)??Ne,errorMessage:`Effect "${be.label}" of type ${x(he)} is available through an effect row spread but not explicitly declared in the function's using clause.
10809
10809
  Add it explicitly:
10810
10810
  using(${be.label} : ${x(he)}, ...(E))`});let Oe=Me;if(Oe.length>1){let gt=Ps(o,Ze=>Ze.isImplicit===!0&&Ze.isCompileTimeOnly===!0&&ie({type:he,env:k},{type:Ze.type,env:o}));if(gt>=0){let tt=o.frames[gt].variables.filter(Ve=>Ve.isImplicit===!0&&Ve.isCompileTimeOnly===!0&&ie({type:he,env:k},{type:Ve.type,env:o}));tt.length>0&&(Oe=tt)}}if(Oe.length>1)throw m({token:(r==null?void 0:r.token)??(e==null?void 0:e.token)??Ne,errorMessage:`Ambiguous implicit parameter "${be.label}": found ${Oe.length} "given" variables with compatible type ${x(he)} in the same scope.
10811
- Please use explicit using() to disambiguate.`});let ye=Oe[Oe.length-1],Ue=(nt=ye.value)==null?void 0:nt[0];if(!Ue)throw m({token:(r==null?void 0:r.token)??(e==null?void 0:e.token)??Ne,errorMessage:`The "given" variable "${ye.name}" has no compile-time value.`});V.push({value:Ue,parameterType:he,argType:ye.type});let{env:We}=Be({env:k,variable:{name:be.label,type:he,isCompileTimeOnly:!0,isImplicit:!0,value:[Ue],token:((Wt=be.exprs.labelExpr)==null?void 0:Wt.token)??Ne,initializedAtToken:((ar=be.exprs.labelExpr)==null?void 0:ar.token)??Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});k=We}}let O={args:p,forallArgs:f,implicitArgs:V,variadicArgs:N},W;if(n.return.isCompileTimeOnly)if(u)W=oe(A,{variableName:n.return.label,env:n.env,context:a});else if($e(t)){let{value:Te,callerEnv:be,calleeEnv:we}=Xa({functionCalleeExpr:r,functionType:n,functionValue:t,argValues:O,callerEnv:o,calleeEnv:k,context:{...a}});W=Te,A=Te.type,o=be,k=we}else{let Te=Vt(A)&&A.level===0,be=`${n.id}_return_sometype`;if(Te)if((Tt=a.expectedType)!=null&&Tt.type)W=_e(a.expectedType.type);else if(a.isEvaluatingFunctionType){let we=Or(A,n.return.label,{id:be,env:k,context:a});we.functionApplication=e;let he=Gn(k,we);W=_e(he)}else throw m({token:(e==null?void 0:e.token)??(r==null?void 0:r.token)??Ne,errorMessage:"Cannot infer comptime return type. Please provide the expected type."});else W=oe(A,{variableName:n.return.label,env:n.env,context:a})}cb({returnType:A,env:k,expr:e,context:a});let P,G=((sn=a.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:sn.kind)==="function-body"&&a.isEvaluatingFunctionBodyOrAsyncBlock.value&&$e(a.isEvaluatingFunctionBodyOrAsyncBlock.value)&&t&&$e(t)&&a.isEvaluatingFunctionBodyOrAsyncBlock.value.funcId===t.funcId,U=(Dr=O.implicitArgs)==null?void 0:Dr.some(Te=>Ge(Te.value)),X=U&&!((kt=O.implicitArgs)!=null&&kt.some(Te=>Ge(Te.value)&&!Qe(Te.parameterType))),re=O.args.some(Te=>Te.argType&&z(Te.argType)),ee=X&&re,fe=(()=>{if(!U||!n.implicitParameters.some(he=>he.isEffectRowSpread))return!1;let be=0;for(let he of n.implicitParameters)he.isEffectRowSpread||be++;let we=O.implicitArgs??[];for(let he=0;he<be&&he<we.length;he++)if(Ge(we[he].value))return!1;return!0})(),Q=ii(n)&&!ki(n)&&n.implicitParameters.some(Te=>Qe(Te.type)?Te.type.fields.some(be=>te(be.type)&&be.type.forallParameters.length===0):!!Te.isEffectRowSpread);if(!l&&!Q&&t&&$e(t)&&!t.isControlFunction&&ii(n)&&!G&&(!U||ee||fe)){if(P=lb({originalFunction:t,argValues:O,calleeEnv:k,callerEnv:o,context:a}),P&&z(A)){let Te=(vn=(hn=P.body)==null?void 0:hn.$)==null?void 0:vn.type;Te&&!z(Te)&&(A=Te,P.specializedType&&(P.specializedType={...P.specializedType,return:{...P.specializedType.return,type:Te}}))}if(P){let Te=new Set,be=0;for(let we=0;we<n.parameters.length;we++)if(!n.parameters[we].isCompileTimeOnly){let Ce=O.args[we],Me=Ce==null?void 0:Ce.value;Me&&$e(Me)&&Me.type.implicitParameters.some(pt=>te(pt.type)||Qe(pt.type))&&Te.add(be),be++}if(Te.size>0)for(let we=_.length-1;we>=0;we--)Te.has(we)&&_.splice(we,1)}}if(!l&&t&&$e(t)&&t.isControlFunction&&n.forallParameters.length>0&&!P&&(P=ub({originalFunction:t,argValues:O,calleeEnv:k,callerEnv:o,context:a}),P&&z(A))){let Te=(kn=(Bn=P.body)==null?void 0:Bn.$)==null?void 0:kn.type;Te&&!z(Te)&&(A=Te,P.specializedType&&(P.specializedType={...P.specializedType,return:{...P.specializedType.return,type:Te}}))}let pe=Oa(o),Z;if(pe.length>0){let Te=ab({variablesToDrop:pe,env:o,context:a});Z=Te.deferredDropExpressions,o=Te.env}return{returnType:A,calleeEnv:k,callerEnv:o,pathCollection:M,argValues:O,returnValue:W,specializedFunctionValue:P,runtimeArgExprsInOrder:_,deferredDropExpressions:Z}}function lb({originalFunction:e,argValues:t,calleeEnv:n,callerEnv:r,context:i}){var N,M,V,O,W,P,G,U,X,re,ee,fe,de;if(zu){Ui.specializeCount++;let Q=e.funcName??e.funcId;Ui.specializeNames.set(Q,(Ui.specializeNames.get(Q)??0)+1)}let o=e.type,a=[],s=[];t.forallArgs&&a.push(...t.forallArgs.map(Q=>Q.value)),t.implicitArgs&&a.push(...t.implicitArgs.map(Q=>Q.value)),o.parameters.forEach((Q,pe)=>{let Z=t.args[pe];if(Q.isCompileTimeOnly)Z.value&&a.push(Z.value);else if(Z.value&&$e(Z.value)&&Z.value.type.implicitParameters.some(ke=>te(ke.type)||Qe(ke.type)))Z.value&&a.push(Z.value);else{let Fe=z(Z.argType)&&Z.argType.resolvedConcreteType&&!rt(Z.argType)?Z.argType.resolvedConcreteType:Z.argType;s.push({...Q,type:Fe})}});let l=s.map(Q=>Q.type),u=e.specializedFunctionCaches.find(Q=>Q.compileTimeArgValues.length===a.length&&Q.compileTimeArgValues.every((me,ke)=>{let Fe=a[ke];return Vn({value:me,env:Q.env},{value:Fe,env:r})})?Q.runtimeParameterTypes.length===l.length&&Q.runtimeParameterTypes.every((me,ke)=>{let Fe=l[ke];return ie({type:me,env:Q.env},{type:Fe,env:r},!0)}):!1);if(u)return zu&&Ui.cacheHitCount++,u.specializedFunction;zu&&Ui.cacheMissCount++;let c=n;for(let Q of r.frames)for(let pe of Q.variables){if(!pe.isCompileTimeOnly||ue(c,pe.name).length>0)continue;let{env:me}=Be({env:c,variable:{...pe},allowVariableShadowing:!0});c=me}for(let Q of s){let pe=ue(c,Q.label);if(pe.length>0){let Z=pe[pe.length-1],me={...Z,value:void 0};c=It(c,Z,me)}}let f=mt(e.body),{returnType:p,calleeEnv:_}=ia({functionType:o,calleeEnv:c,context:{...i,isEvaluatingFunctionType:!0},functionCalleeExpr:void 0});c=_;let d=i.enclosingFunctionReturnType,g=((N=t.implicitArgs)==null?void 0:N.some(Q=>$e(Q.value)&&Q.value.isControlFunction||At(Q.value)&&mg(Q.value.type,Q.value)))??!1,y=gn({expr:f,env:c,context:{...i,expectedType:{type:p,env:c},isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:o,value:e,evaluationEnv:c},isEvaluatingLoopBody:void 0,capturedVariables:void 0,functionReturnImplConcreteType:[],hasControlFunctionImplicitParams:g,...d?{enclosingFunctionReturnType:d}:{}},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0});if(!y.$)throw m({token:e.body.token,errorMessage:"Failed to evaluate function body for specialization."});let h=[],v=0;for(let Q=0;Q<o.implicitParameters.length;Q++){let pe=o.implicitParameters[Q];if(te(pe.type)){let Z=(M=t.implicitArgs)==null?void 0:M[v],me=Z&&$e(Z.value)?Z.value:void 0;me!=null&&me.isControlFunction&&h.push({handlerArgIndex:v,label:pe.label,type:pe.type,fromSpread:!1}),v+=1}else if(pe.isEffectRowSpread){let Z=pe.type;if(z(Z)){let ke=(O=(V=ue(c,pe.label).at(-1))==null?void 0:V.value)==null?void 0:O[0];if(ke&&Y(ke)&&Xt(ke.value))Z=ke.value;else{let Fe=Gn(c,Z);Fe&&(Z=Fe)}}if(Xt(Z)){for(let me=0;me<Z.implicitParameters.length;me++){let ke=Z.implicitParameters[me];if(te(ke.type)){let Fe=(W=t.implicitArgs)==null?void 0:W[v+me],yt=Fe&&$e(Fe.value)?Fe.value:void 0;yt!=null&&yt.isControlFunction&&h.push({handlerArgIndex:v+me,label:ke.label,type:ke.type,fromSpread:!0})}else if(Qe(ke.type)){let Fe=(P=t.implicitArgs)==null?void 0:P[v+me],yt=Fe&&At(Fe.value)?Fe.value:void 0,le=[],Ee=(ne,Ie,je)=>{for(let it=0;it<ne.fields.length;it++){let Mt=ne.fields[it];if(te(Mt.type)){let K=je==null?void 0:je.fields[it];if(K&&$e(K)&&K.isControlFunction){let J=K.specializedType??Mt.type;le.push({path:[...Ie,Mt.label],type:J})}}else if(Qe(Mt.type)){let K=je==null?void 0:je.fields[it];Ee(Mt.type,[...Ie,Mt.label],K&&At(K)?K:void 0)}}};Ee(ke.type,[],yt);for(let ne of le)h.push({handlerArgIndex:v+me,label:ke.label,type:ne.type,fromSpread:!0,effectFieldPath:ne.path})}}v+=Z.implicitParameters.length}else v+=1}else if(Qe(pe.type)){let Z=[],me=(G=t.implicitArgs)==null?void 0:G[v],ke=(Fe,yt,le)=>{for(let Ee=0;Ee<Fe.fields.length;Ee++){let ne=Fe.fields[Ee];if(te(ne.type)){let Ie=le==null?void 0:le.fields[Ee];if(Ie&&$e(Ie)&&Ie.isControlFunction){let je=Ie.specializedType??ne.type;Z.push({path:[...yt,ne.label],type:je})}}else if(Qe(ne.type)){let Ie=le==null?void 0:le.fields[Ee];ke(ne.type,[...yt,ne.label],Ie&&At(Ie)?Ie:void 0)}}};ke(pe.type,[],me&&At(me.value)?me.value:void 0);for(let Fe of Z)h.push({handlerArgIndex:v,label:pe.label,type:Fe.type,fromSpread:!1,effectFieldPath:Fe.path});v+=1}else v+=1}let E=[];for(let Q of h){let pe=pg(y,Q.label,Q.type,!0,Q.effectFieldPath);if(pe.hasEffects){let Z=(U=t.implicitArgs)==null?void 0:U[Q.handlerArgIndex],me,ke=Q.effectFieldPath;if(Z&&$e(Z.value))me=Z.value;else if(Z&&At(Z.value)&&ke&&ke.length>0){let Fe=Z.value;for(let yt of ke){if(!At(Fe)){Fe=void 0;break}let le=Fe.type.fields.findIndex(Ee=>Ee.label===yt);if(le<0||!Fe.fields[le]){Fe=void 0;break}Fe=Fe.fields[le]}Fe&&$e(Fe)&&(me=Fe)}if(me){let Fe=me,yt=Q.type,le=!Fe.body.$;if(!le&&Fe.isControlFunction&&S(Fe.body)&&Fe.body.args.length>0&&!((X=Fe.body.args[0])!=null&&X.$)&&(le=!0),le&&te(yt)&&yt.forallParameters.length>0&&pe.effectCallPoints.length>0){let Ee=new Map,ne=yt.return.type,Ie=pe.effectCallPoints[0].operationResultType;if(z(ne)&&Ee.set(ne.name,Ie),Ee.size===0&&yt.forallParameters.length===1){let ae=yt.forallParameters[0];Ee.set(ae.label,Ie)}let je=mt(Fe.body),it=((re=Fe.body.$)==null?void 0:re.env)??c;it=Ct(it);for(let ae of yt.forallParameters){let Se=Ee.get(ae.label);Se&&(it=Be({env:it,variable:{name:ae.label,type:ae.type,isCompileTimeOnly:!0,value:[_e(Se)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0}).env)}let Mt=Fe.specializedType??Fe.type,K=((ee=Fe.definitionSiteEnclosingFunctionType)==null?void 0:ee.return.type)??Qr(),J={...i,expectedType:void 0,enclosingFunctionReturnType:K,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:Mt,value:Fe,evaluationEnv:it}};try{let ae=Lo({expr:je,env:it,context:J}),Se=Mt.parameters.map(nt=>{if(nt.isCompileTimeOnly)return nt;if(z(nt.type)){let Wt=Ee.get(nt.type.name);if(Wt)return{...nt,type:Wt}}return nt}),De=Mt.return.type;if(z(De)){let nt=Ee.get(De.name);nt&&(De=nt)}let Re={...Mt,parameters:Se,return:{...Mt.return,type:De}},Xe={...Fe,body:ae,specializedType:Re};pe.handlerValue=Xe,pe.effectParameterType=Re;for(let nt of pe.effectCallPoints)nt.isTransitiveEffectCall&&(nt.operationArgTypes=nt.operationArgTypes.map(Wt=>z(Wt)?Ee.get(Wt.name)??Wt:Wt))}catch(ae){if(S(Fe.body)&&Fe.body.args.length>0&&!((fe=Fe.body.args[0])!=null&&fe.$))throw ae;pe.handlerValue=Fe}}else pe.handlerValue=Fe}else Z&&(pe.handlerValue=Z.value);E.push({analysis:pe,ctlParam:Q})}}if(E.length===1)y.$.effectAnalysis=E[0].analysis;else if(E.length>1){let Q=[],pe=new Map,Z=new Map,me=[];for(let yt=0;yt<E.length;yt++){let{analysis:le}=E[yt];me.push({effectParameterName:le.effectParameterName,effectParameterType:le.effectParameterType,effectFieldPath:le.effectFieldPath,handlerValue:le.handlerValue,operationArgTypes:le.effectCallPoints.length>0?le.effectCallPoints[0].operationArgTypes:[],operationResultType:le.effectCallPoints.length>0?le.effectCallPoints[0].operationResultType:{tag:"unit"}});for(let Ee of le.effectCallPoints)Q.push({...Ee,effectIndex:yt});for(let Ee of le.capturedVariables)pe.has(Ee.id)||pe.set(Ee.id,Ee);for(let[Ee,ne]of le.variableIdRemapping)Z.set(Ee,ne)}if(S(y)&&T(y,D.begin)){let yt=y.args,le=new Map;for(let ne=0;ne<yt.length;ne++)le.set(yt[ne],ne);let Ee=ne=>{for(let Ie=0;Ie<yt.length;Ie++)if($f(yt[Ie],ne.expr))return Ie;return 999};Q.sort((ne,Ie)=>Ee(ne)-Ee(Ie))}for(let yt=0;yt<Q.length;yt++)Q[yt].index=yt;let ke=E[0].analysis,Fe={effectCallPoints:Q,capturedVariables:Array.from(pe.values()),hasEffects:!0,variableIdRemapping:Z,effectParameterName:ke.effectParameterName,effectParameterType:ke.effectParameterType,effectFieldPath:ke.effectFieldPath,handlerValue:ke.handlerValue,effectHandlerInfos:me};y.$.effectAnalysis=Fe}let $=[],C=Q=>{if(Y(Q)){let pe=Q.value;if(!pe.typeName&&pe.id)return`${vt(Q)}_id${pe.id}`}return $e(Q)?`fn_${Q.funcId}`:vt(Q)};o.forallParameters.forEach((Q,pe)=>{var Z,me;if(pe<t.forallArgs.length){let ke=t.forallArgs[pe];$.push(ve(C(ke.value)))}else{let ke=Q.label,Fe=ue(n,ke);Fe.length>0&&((me=(Z=Fe[Fe.length-1])==null?void 0:Z.value)!=null&&me[0])?$.push(ve(C(Fe[Fe.length-1].value[0]))):$.push("unknown")}}),o.parameters.forEach((Q,pe)=>{if(Q.isCompileTimeOnly&&pe<t.args.length){let Z=t.args[pe];Z?$.push(ve(C(Z.value))):$.push("unknown")}}),t.implicitArgs&&t.implicitArgs.forEach(Q=>{$.push(ve(C(Q.value)))}),s.forEach((Q,pe)=>{let Z=Q.type;(!Z.typeName&&Z.id||lt(Z))&&$.push(`rtparam${pe}_${ve(x(Z))}_id${Z.id}`)});let w=$.join("_"),k=[];for(let Q of o.implicitParameters)if(Q.isEffectRowSpread){let pe=Q.type;if(z(pe)){if(t.forallArgs){for(let Z=0;Z<o.forallParameters.length;Z++)if(o.forallParameters[Z].label===pe.name&&Z<t.forallArgs.length){let ke=t.forallArgs[Z].value;Y(ke)&&Xt(ke.value)&&(pe=ke.value);break}}if(z(pe)&&pe.resolvedConcreteType&&Xt(pe.resolvedConcreteType)&&(pe=pe.resolvedConcreteType),z(pe)){let Z=ue(c,pe.name);if(Z.length>0){let ke=(de=Z[Z.length-1].value)==null?void 0:de[0];ke&&Y(ke)&&Xt(ke.value)&&(pe=ke.value)}}}Xt(pe)&&k.push(...pe.implicitParameters)}else Qe(Q.type)&&k.push(Q);let b=jo({forallParameters:[],parameters:s,implicitParameters:k.length>0?k:void 0,variadicParameter:void 0,return_:{...o.return,type:p},parametersFrame:c.frames[c.frames.length-1],env:o.env,SelfType:o.SelfType}),A={...e,specializedType:b,body:y,isControlFunction:e.isControlFunction||vi(y),funcId:`${e.funcId}_${w}`,funcName:`${e.funcName}_${w}`,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},I={funcId:e.funcId,compileTimeArgValues:a,runtimeParameterTypes:l,specializedFunction:A,env:y.$.env};return e.specializedFunctionCaches=[...e.specializedFunctionCaches,I],A}function ub({originalFunction:e,calleeEnv:t,callerEnv:n,context:r}){var h,v,E;let i=e.type,o=((h=r.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:h.kind)==="function-body"?r.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type:i.return.type,a=((v=e.definitionSiteEnclosingFunctionType)==null?void 0:v.return.type)??Qr(),s=ve(x(o)),l=e.specializedFunctionCaches.find($=>$.specializedFunction.funcId===`${e.funcId}_ctl_${s}`);if(l)return l.specializedFunction;let u=Ct(t);for(let $ of n.frames)for(let C of $.variables){if(!C.isCompileTimeOnly||ue(u,C.name).length>0)continue;let{env:k}=Be({env:u,variable:{...C},allowVariableShadowing:!0});u=k}for(let $ of i.forallParameters){let C=o,{env:w}=Be({env:u,variable:{name:$.label,type:$.type,isCompileTimeOnly:!0,value:[_e(C)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});u=w}let c=mt(e.body),f={...r,expectedType:void 0,enclosingFunctionReturnType:a,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:i,value:e,evaluationEnv:u},functionReturnImplConcreteType:[]},p=Lo({expr:c,env:u,context:f}),_={...e,body:p,isControlFunction:e.isControlFunction||vi(p),funcId:`${e.funcId}_ctl_${s}`,funcName:`${e.funcName??e.funcId}_ctl_${s}`,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},d=new Set(i.forallParameters.map($=>$.type)),g=$=>z($)&&d.has($)?o:$,y=jo({forallParameters:[],parameters:i.parameters.map($=>({...$,type:g($.type)})),implicitParameters:i.implicitParameters.length>0?i.implicitParameters:void 0,variadicParameter:void 0,return_:{...i.return,type:g(i.return.type)},parametersFrame:u.frames[u.frames.length-1],env:i.env,SelfType:i.SelfType});return _.specializedType=y,e.specializedFunctionCaches=[...e.specializedFunctionCaches,{funcId:e.funcId,compileTimeArgValues:[],runtimeParameterTypes:[],specializedFunction:_,env:((E=p.$)==null?void 0:E.env)??u}],_}function cb({returnType:e,expr:t,env:n,context:r}){var o;if(r.isEvaluatingFunctionType||r.expectedType)return;let i=Cc(e);for(let a of i){if(rt(a)||Qn(a)||a.resolvedConcreteType||a.requiredTraits&&a.requiredTraits.length>0)continue;if(!ue(n,a.name).length){let l=hr(n,()=>!0),u=!1;for(let c of l)if(Y((o=c.value)==null?void 0:o[0])){let f=c.value[0].value,p=Cc(f);for(let _ of p)if(_.name===a.name){u=!0;break}if(u)break}if(u)continue;throw m({token:(t==null?void 0:t.token)??Ne,errorMessage:`Failed to infer the function call return type.
10812
- Please consider providing the expected type.`})}}}function $f(e,t){if(e===t)return!0;if(e.tag==="FnCall"){if($f(e.func,t))return!0;for(let n of e.args)if($f(n,t))return!0}return!1}var zu,dg,Ui,bf=j(()=>{zt();ft();xe();ce();Zo();Ci();pn();Qt();dt();ui();Ae();Je();ge();_g();Bu();fi();Ke();Gt();io();Da();Su();zu=Uu("YO_DEBUG_CALL")||Uu("YO_DEBUG_CALL_PROFILE")||Uu("YO_DEBUG_EVAL")||Uu("YO_DEBUG_EVAL_PROFILE"),dg=globalThis,Ui=dg.__yoCallProfilerState??(dg.__yoCallProfilerState={tryCallCount:0,specializeCount:0,cacheHitCount:0,cacheMissCount:0,specializeNames:new Map,tryCallNames:new Map})});function yg({expr:e,env:t,context:n}){let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for Iso:
10811
+ Please use explicit using() to disambiguate.`});let ye=Oe[Oe.length-1],Ue=(nt=ye.value)==null?void 0:nt[0];if(!Ue)throw m({token:(r==null?void 0:r.token)??(e==null?void 0:e.token)??Ne,errorMessage:`The "given" variable "${ye.name}" has no compile-time value.`});V.push({value:Ue,parameterType:he,argType:ye.type});let{env:We}=Be({env:k,variable:{name:be.label,type:he,isCompileTimeOnly:!0,isImplicit:!0,value:[Ue],token:((Wt=be.exprs.labelExpr)==null?void 0:Wt.token)??Ne,initializedAtToken:((ar=be.exprs.labelExpr)==null?void 0:ar.token)??Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});k=We}}let O={args:p,forallArgs:f,implicitArgs:V,variadicArgs:N},W;if(n.return.isCompileTimeOnly)if(u)W=oe(A,{variableName:n.return.label,env:n.env,context:a});else if($e(t)){let{value:Te,callerEnv:be,calleeEnv:we}=Xa({functionCalleeExpr:r,functionType:n,functionValue:t,argValues:O,callerEnv:o,calleeEnv:k,context:{...a}});W=Te,A=Te.type,o=be,k=we}else{let Te=Vt(A)&&A.level===0,be=`${n.id}_return_sometype`;if(Te)if((Tt=a.expectedType)!=null&&Tt.type)W=_e(a.expectedType.type);else if(a.isEvaluatingFunctionType){let we=Or(A,n.return.label,{id:be,env:k,context:a});we.functionApplication=e;let he=Gn(k,we);W=_e(he)}else throw m({token:(e==null?void 0:e.token)??(r==null?void 0:r.token)??Ne,errorMessage:"Cannot infer comptime return type. Please provide the expected type."});else W=oe(A,{variableName:n.return.label,env:n.env,context:a})}cb({returnType:A,env:k,expr:e,context:a});let P,G=((sn=a.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:sn.kind)==="function-body"&&a.isEvaluatingFunctionBodyOrAsyncBlock.value&&$e(a.isEvaluatingFunctionBodyOrAsyncBlock.value)&&t&&$e(t)&&a.isEvaluatingFunctionBodyOrAsyncBlock.value.funcId===t.funcId,U=(Dr=O.implicitArgs)==null?void 0:Dr.some(Te=>Ge(Te.value)),X=U&&!((kt=O.implicitArgs)!=null&&kt.some(Te=>Ge(Te.value)&&!Qe(Te.parameterType))),re=O.args.some(Te=>Te.argType&&z(Te.argType)),ee=X&&re,fe=(()=>{if(!U||!n.implicitParameters.some(he=>he.isEffectRowSpread))return!1;let be=0;for(let he of n.implicitParameters)he.isEffectRowSpread||be++;let we=O.implicitArgs??[];for(let he=0;he<be&&he<we.length;he++)if(Ge(we[he].value))return!1;return!0})(),Q=ii(n)&&!wi(n)&&n.implicitParameters.some(Te=>Qe(Te.type)?Te.type.fields.some(be=>te(be.type)&&be.type.forallParameters.length===0):!!Te.isEffectRowSpread);if(!l&&!Q&&t&&$e(t)&&!t.isControlFunction&&ii(n)&&!G&&(!U||ee||fe)){if(P=lb({originalFunction:t,argValues:O,calleeEnv:k,callerEnv:o,context:a}),P&&z(A)){let Te=(vn=(hn=P.body)==null?void 0:hn.$)==null?void 0:vn.type;Te&&!z(Te)&&(A=Te,P.specializedType&&(P.specializedType={...P.specializedType,return:{...P.specializedType.return,type:Te}}))}if(P){let Te=new Set,be=0;for(let we=0;we<n.parameters.length;we++)if(!n.parameters[we].isCompileTimeOnly){let Ce=O.args[we],Me=Ce==null?void 0:Ce.value;Me&&$e(Me)&&Me.type.implicitParameters.some(pt=>te(pt.type)||Qe(pt.type))&&Te.add(be),be++}if(Te.size>0)for(let we=_.length-1;we>=0;we--)Te.has(we)&&_.splice(we,1)}}if(!l&&t&&$e(t)&&t.isControlFunction&&n.forallParameters.length>0&&!P&&(P=ub({originalFunction:t,argValues:O,calleeEnv:k,callerEnv:o,context:a}),P&&z(A))){let Te=(kn=(Bn=P.body)==null?void 0:Bn.$)==null?void 0:kn.type;Te&&!z(Te)&&(A=Te,P.specializedType&&(P.specializedType={...P.specializedType,return:{...P.specializedType.return,type:Te}}))}let pe=Oa(o),Z;if(pe.length>0){let Te=ab({variablesToDrop:pe,env:o,context:a});Z=Te.deferredDropExpressions,o=Te.env}return{returnType:A,calleeEnv:k,callerEnv:o,pathCollection:M,argValues:O,returnValue:W,specializedFunctionValue:P,runtimeArgExprsInOrder:_,deferredDropExpressions:Z}}function lb({originalFunction:e,argValues:t,calleeEnv:n,callerEnv:r,context:i}){var N,M,V,O,W,P,G,U,X,re,ee,fe,de;if(zu){zi.specializeCount++;let Q=e.funcName??e.funcId;zi.specializeNames.set(Q,(zi.specializeNames.get(Q)??0)+1)}let o=e.type,a=[],s=[];t.forallArgs&&a.push(...t.forallArgs.map(Q=>Q.value)),t.implicitArgs&&a.push(...t.implicitArgs.map(Q=>Q.value)),o.parameters.forEach((Q,pe)=>{let Z=t.args[pe];if(Q.isCompileTimeOnly)Z.value&&a.push(Z.value);else if(Z.value&&$e(Z.value)&&Z.value.type.implicitParameters.some(ke=>te(ke.type)||Qe(ke.type)))Z.value&&a.push(Z.value);else{let Fe=z(Z.argType)&&Z.argType.resolvedConcreteType&&!rt(Z.argType)?Z.argType.resolvedConcreteType:Z.argType;s.push({...Q,type:Fe})}});let l=s.map(Q=>Q.type),u=e.specializedFunctionCaches.find(Q=>Q.compileTimeArgValues.length===a.length&&Q.compileTimeArgValues.every((me,ke)=>{let Fe=a[ke];return Vn({value:me,env:Q.env},{value:Fe,env:r})})?Q.runtimeParameterTypes.length===l.length&&Q.runtimeParameterTypes.every((me,ke)=>{let Fe=l[ke];return ie({type:me,env:Q.env},{type:Fe,env:r},!0)}):!1);if(u)return zu&&zi.cacheHitCount++,u.specializedFunction;zu&&zi.cacheMissCount++;let c=n;for(let Q of r.frames)for(let pe of Q.variables){if(!pe.isCompileTimeOnly||ue(c,pe.name).length>0)continue;let{env:me}=Be({env:c,variable:{...pe},allowVariableShadowing:!0});c=me}for(let Q of s){let pe=ue(c,Q.label);if(pe.length>0){let Z=pe[pe.length-1],me={...Z,value:void 0};c=It(c,Z,me)}}let f=mt(e.body),{returnType:p,calleeEnv:_}=ia({functionType:o,calleeEnv:c,context:{...i,isEvaluatingFunctionType:!0},functionCalleeExpr:void 0});c=_;let d=i.enclosingFunctionReturnType,g=((N=t.implicitArgs)==null?void 0:N.some(Q=>$e(Q.value)&&Q.value.isControlFunction||At(Q.value)&&mg(Q.value.type,Q.value)))??!1,y=gn({expr:f,env:c,context:{...i,expectedType:{type:p,env:c},isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:o,value:e,evaluationEnv:c},isEvaluatingLoopBody:void 0,capturedVariables:void 0,functionReturnImplConcreteType:[],hasControlFunctionImplicitParams:g,...d?{enclosingFunctionReturnType:d}:{}},variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0});if(!y.$)throw m({token:e.body.token,errorMessage:"Failed to evaluate function body for specialization."});let h=[],v=0;for(let Q=0;Q<o.implicitParameters.length;Q++){let pe=o.implicitParameters[Q];if(te(pe.type)){let Z=(M=t.implicitArgs)==null?void 0:M[v],me=Z&&$e(Z.value)?Z.value:void 0;me!=null&&me.isControlFunction&&h.push({handlerArgIndex:v,label:pe.label,type:pe.type,fromSpread:!1}),v+=1}else if(pe.isEffectRowSpread){let Z=pe.type;if(z(Z)){let ke=(O=(V=ue(c,pe.label).at(-1))==null?void 0:V.value)==null?void 0:O[0];if(ke&&Y(ke)&&Xt(ke.value))Z=ke.value;else{let Fe=Gn(c,Z);Fe&&(Z=Fe)}}if(Xt(Z)){for(let me=0;me<Z.implicitParameters.length;me++){let ke=Z.implicitParameters[me];if(te(ke.type)){let Fe=(W=t.implicitArgs)==null?void 0:W[v+me],yt=Fe&&$e(Fe.value)?Fe.value:void 0;yt!=null&&yt.isControlFunction&&h.push({handlerArgIndex:v+me,label:ke.label,type:ke.type,fromSpread:!0})}else if(Qe(ke.type)){let Fe=(P=t.implicitArgs)==null?void 0:P[v+me],yt=Fe&&At(Fe.value)?Fe.value:void 0,le=[],Ee=(ne,Ie,je)=>{for(let it=0;it<ne.fields.length;it++){let Mt=ne.fields[it];if(te(Mt.type)){let K=je==null?void 0:je.fields[it];if(K&&$e(K)&&K.isControlFunction){let J=K.specializedType??Mt.type;le.push({path:[...Ie,Mt.label],type:J})}}else if(Qe(Mt.type)){let K=je==null?void 0:je.fields[it];Ee(Mt.type,[...Ie,Mt.label],K&&At(K)?K:void 0)}}};Ee(ke.type,[],yt);for(let ne of le)h.push({handlerArgIndex:v+me,label:ke.label,type:ne.type,fromSpread:!0,effectFieldPath:ne.path})}}v+=Z.implicitParameters.length}else v+=1}else if(Qe(pe.type)){let Z=[],me=(G=t.implicitArgs)==null?void 0:G[v],ke=(Fe,yt,le)=>{for(let Ee=0;Ee<Fe.fields.length;Ee++){let ne=Fe.fields[Ee];if(te(ne.type)){let Ie=le==null?void 0:le.fields[Ee];if(Ie&&$e(Ie)&&Ie.isControlFunction){let je=Ie.specializedType??ne.type;Z.push({path:[...yt,ne.label],type:je})}}else if(Qe(ne.type)){let Ie=le==null?void 0:le.fields[Ee];ke(ne.type,[...yt,ne.label],Ie&&At(Ie)?Ie:void 0)}}};ke(pe.type,[],me&&At(me.value)?me.value:void 0);for(let Fe of Z)h.push({handlerArgIndex:v,label:pe.label,type:Fe.type,fromSpread:!1,effectFieldPath:Fe.path});v+=1}else v+=1}let E=[];for(let Q of h){let pe=pg(y,Q.label,Q.type,!0,Q.effectFieldPath);if(pe.hasEffects){let Z=(U=t.implicitArgs)==null?void 0:U[Q.handlerArgIndex],me,ke=Q.effectFieldPath;if(Z&&$e(Z.value))me=Z.value;else if(Z&&At(Z.value)&&ke&&ke.length>0){let Fe=Z.value;for(let yt of ke){if(!At(Fe)){Fe=void 0;break}let le=Fe.type.fields.findIndex(Ee=>Ee.label===yt);if(le<0||!Fe.fields[le]){Fe=void 0;break}Fe=Fe.fields[le]}Fe&&$e(Fe)&&(me=Fe)}if(me){let Fe=me,yt=Q.type,le=!Fe.body.$;if(!le&&Fe.isControlFunction&&S(Fe.body)&&Fe.body.args.length>0&&!((X=Fe.body.args[0])!=null&&X.$)&&(le=!0),le&&te(yt)&&yt.forallParameters.length>0&&pe.effectCallPoints.length>0){let Ee=new Map,ne=yt.return.type,Ie=pe.effectCallPoints[0].operationResultType;if(z(ne)&&Ee.set(ne.name,Ie),Ee.size===0&&yt.forallParameters.length===1){let ae=yt.forallParameters[0];Ee.set(ae.label,Ie)}let je=mt(Fe.body),it=((re=Fe.body.$)==null?void 0:re.env)??c;it=Ct(it);for(let ae of yt.forallParameters){let Se=Ee.get(ae.label);Se&&(it=Be({env:it,variable:{name:ae.label,type:ae.type,isCompileTimeOnly:!0,value:[_e(Se)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0}).env)}let Mt=Fe.specializedType??Fe.type,K=((ee=Fe.definitionSiteEnclosingFunctionType)==null?void 0:ee.return.type)??Qr(),J={...i,expectedType:void 0,enclosingFunctionReturnType:K,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:Mt,value:Fe,evaluationEnv:it}};try{let ae=Lo({expr:je,env:it,context:J}),Se=Mt.parameters.map(nt=>{if(nt.isCompileTimeOnly)return nt;if(z(nt.type)){let Wt=Ee.get(nt.type.name);if(Wt)return{...nt,type:Wt}}return nt}),De=Mt.return.type;if(z(De)){let nt=Ee.get(De.name);nt&&(De=nt)}let Re={...Mt,parameters:Se,return:{...Mt.return,type:De}},Xe={...Fe,body:ae,specializedType:Re};pe.handlerValue=Xe,pe.effectParameterType=Re;for(let nt of pe.effectCallPoints)nt.isTransitiveEffectCall&&(nt.operationArgTypes=nt.operationArgTypes.map(Wt=>z(Wt)?Ee.get(Wt.name)??Wt:Wt))}catch(ae){if(S(Fe.body)&&Fe.body.args.length>0&&!((fe=Fe.body.args[0])!=null&&fe.$))throw ae;pe.handlerValue=Fe}}else pe.handlerValue=Fe}else Z&&(pe.handlerValue=Z.value);E.push({analysis:pe,ctlParam:Q})}}if(E.length===1)y.$.effectAnalysis=E[0].analysis;else if(E.length>1){let Q=[],pe=new Map,Z=new Map,me=[];for(let yt=0;yt<E.length;yt++){let{analysis:le}=E[yt];me.push({effectParameterName:le.effectParameterName,effectParameterType:le.effectParameterType,effectFieldPath:le.effectFieldPath,handlerValue:le.handlerValue,operationArgTypes:le.effectCallPoints.length>0?le.effectCallPoints[0].operationArgTypes:[],operationResultType:le.effectCallPoints.length>0?le.effectCallPoints[0].operationResultType:{tag:"unit"}});for(let Ee of le.effectCallPoints)Q.push({...Ee,effectIndex:yt});for(let Ee of le.capturedVariables)pe.has(Ee.id)||pe.set(Ee.id,Ee);for(let[Ee,ne]of le.variableIdRemapping)Z.set(Ee,ne)}if(S(y)&&T(y,D.begin)){let yt=y.args,le=new Map;for(let ne=0;ne<yt.length;ne++)le.set(yt[ne],ne);let Ee=ne=>{for(let Ie=0;Ie<yt.length;Ie++)if($f(yt[Ie],ne.expr))return Ie;return 999};Q.sort((ne,Ie)=>Ee(ne)-Ee(Ie))}for(let yt=0;yt<Q.length;yt++)Q[yt].index=yt;let ke=E[0].analysis,Fe={effectCallPoints:Q,capturedVariables:Array.from(pe.values()),hasEffects:!0,variableIdRemapping:Z,effectParameterName:ke.effectParameterName,effectParameterType:ke.effectParameterType,effectFieldPath:ke.effectFieldPath,handlerValue:ke.handlerValue,effectHandlerInfos:me};y.$.effectAnalysis=Fe}let $=[],C=Q=>{if(Y(Q)){let pe=Q.value;if(!pe.typeName&&pe.id)return`${vt(Q)}_id${pe.id}`}return $e(Q)?`fn_${Q.funcId}`:vt(Q)};o.forallParameters.forEach((Q,pe)=>{var Z,me;if(pe<t.forallArgs.length){let ke=t.forallArgs[pe];$.push(ve(C(ke.value)))}else{let ke=Q.label,Fe=ue(n,ke);Fe.length>0&&((me=(Z=Fe[Fe.length-1])==null?void 0:Z.value)!=null&&me[0])?$.push(ve(C(Fe[Fe.length-1].value[0]))):$.push("unknown")}}),o.parameters.forEach((Q,pe)=>{if(Q.isCompileTimeOnly&&pe<t.args.length){let Z=t.args[pe];Z?$.push(ve(C(Z.value))):$.push("unknown")}}),t.implicitArgs&&t.implicitArgs.forEach(Q=>{$.push(ve(C(Q.value)))}),s.forEach((Q,pe)=>{let Z=Q.type;(!Z.typeName&&Z.id||lt(Z))&&$.push(`rtparam${pe}_${ve(x(Z))}_id${Z.id}`)});let w=$.join("_"),k=[];for(let Q of o.implicitParameters)if(Q.isEffectRowSpread){let pe=Q.type;if(z(pe)){if(t.forallArgs){for(let Z=0;Z<o.forallParameters.length;Z++)if(o.forallParameters[Z].label===pe.name&&Z<t.forallArgs.length){let ke=t.forallArgs[Z].value;Y(ke)&&Xt(ke.value)&&(pe=ke.value);break}}if(z(pe)&&pe.resolvedConcreteType&&Xt(pe.resolvedConcreteType)&&(pe=pe.resolvedConcreteType),z(pe)){let Z=ue(c,pe.name);if(Z.length>0){let ke=(de=Z[Z.length-1].value)==null?void 0:de[0];ke&&Y(ke)&&Xt(ke.value)&&(pe=ke.value)}}}Xt(pe)&&k.push(...pe.implicitParameters)}else Qe(Q.type)&&k.push(Q);let b=jo({forallParameters:[],parameters:s,implicitParameters:k.length>0?k:void 0,variadicParameter:void 0,return_:{...o.return,type:p},parametersFrame:c.frames[c.frames.length-1],env:o.env,SelfType:o.SelfType}),A={...e,specializedType:b,body:y,isControlFunction:e.isControlFunction||Ti(y),funcId:`${e.funcId}_${w}`,funcName:`${e.funcName}_${w}`,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},I={funcId:e.funcId,compileTimeArgValues:a,runtimeParameterTypes:l,specializedFunction:A,env:y.$.env};return e.specializedFunctionCaches=[...e.specializedFunctionCaches,I],A}function ub({originalFunction:e,calleeEnv:t,callerEnv:n,context:r}){var h,v,E;let i=e.type,o=((h=r.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:h.kind)==="function-body"?r.isEvaluatingFunctionBodyOrAsyncBlock.type.return.type:i.return.type,a=((v=e.definitionSiteEnclosingFunctionType)==null?void 0:v.return.type)??Qr(),s=ve(x(o)),l=e.specializedFunctionCaches.find($=>$.specializedFunction.funcId===`${e.funcId}_ctl_${s}`);if(l)return l.specializedFunction;let u=Ct(t);for(let $ of n.frames)for(let C of $.variables){if(!C.isCompileTimeOnly||ue(u,C.name).length>0)continue;let{env:k}=Be({env:u,variable:{...C},allowVariableShadowing:!0});u=k}for(let $ of i.forallParameters){let C=o,{env:w}=Be({env:u,variable:{name:$.label,type:$.type,isCompileTimeOnly:!0,value:[_e(C)],token:Ne,initializedAtToken:Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});u=w}let c=mt(e.body),f={...r,expectedType:void 0,enclosingFunctionReturnType:a,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"function-body",type:i,value:e,evaluationEnv:u},functionReturnImplConcreteType:[]},p=Lo({expr:c,env:u,context:f}),_={...e,body:p,isControlFunction:e.isControlFunction||Ti(p),funcId:`${e.funcId}_ctl_${s}`,funcName:`${e.funcName??e.funcId}_ctl_${s}`,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},d=new Set(i.forallParameters.map($=>$.type)),g=$=>z($)&&d.has($)?o:$,y=jo({forallParameters:[],parameters:i.parameters.map($=>({...$,type:g($.type)})),implicitParameters:i.implicitParameters.length>0?i.implicitParameters:void 0,variadicParameter:void 0,return_:{...i.return,type:g(i.return.type)},parametersFrame:u.frames[u.frames.length-1],env:i.env,SelfType:i.SelfType});return _.specializedType=y,e.specializedFunctionCaches=[...e.specializedFunctionCaches,{funcId:e.funcId,compileTimeArgValues:[],runtimeParameterTypes:[],specializedFunction:_,env:((E=p.$)==null?void 0:E.env)??u}],_}function cb({returnType:e,expr:t,env:n,context:r}){var o;if(r.isEvaluatingFunctionType||r.expectedType)return;let i=Cc(e);for(let a of i){if(rt(a)||Qn(a)||a.resolvedConcreteType||a.requiredTraits&&a.requiredTraits.length>0)continue;if(!ue(n,a.name).length){let l=hr(n,()=>!0),u=!1;for(let c of l)if(Y((o=c.value)==null?void 0:o[0])){let f=c.value[0].value,p=Cc(f);for(let _ of p)if(_.name===a.name){u=!0;break}if(u)break}if(u)continue;throw m({token:(t==null?void 0:t.token)??Ne,errorMessage:`Failed to infer the function call return type.
10812
+ Please consider providing the expected type.`})}}}function $f(e,t){if(e===t)return!0;if(e.tag==="FnCall"){if($f(e.func,t))return!0;for(let n of e.args)if($f(n,t))return!0}return!1}var zu,dg,zi,bf=j(()=>{zt();ft();xe();ce();Zo();ki();pn();Qt();dt();ui();Ae();Je();ge();_g();Bu();fi();Ke();Gt();io();Da();Su();zu=Uu("YO_DEBUG_CALL")||Uu("YO_DEBUG_CALL_PROFILE")||Uu("YO_DEBUG_EVAL")||Uu("YO_DEBUG_EVAL_PROFILE"),dg=globalThis,zi=dg.__yoCallProfilerState??(dg.__yoCallProfilerState={tryCallCount:0,specializeCount:0,cacheHitCount:0,cacheMissCount:0,specializeNames:new Map,tryCallNames:new Map})});function yg({expr:e,env:t,context:n}){let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for Iso:
10813
10813
  ${L(r)}`});if(t=i.$.env,!Y(i.$.value))throw m({token:r.token,errorMessage:`Iso expects a type as argument, but got:
10814
10814
  ${L(r)}`});let a=i.$.value.value,s=Rp(a,t);t=gp({isoType:s,env:t,context:n});let l=_e(s);return e.$={env:t,type:l.type,value:l,pathCollection:[]},e}function gg({expr:e,env:t,context:n,isoType:r}){var s;let i=e.args[0],o=R({expr:i,env:t,context:{...n,expectedType:{type:r.childType,env:t}}});if(!o.$)throw m({token:i.token,errorMessage:`Failed to evaluate the argument expression for Iso value constructor:
10815
10815
  ${L(i)}`});t=o.$.env;let a=(s=o.$)==null?void 0:s.variableName;if(a){let l=ue(t,a);if(l.length>0){let u=l[l.length-1];if(ji(u.type,new Set,t))throw m({token:i.token,errorMessage:`Cannot isolate variable ${a} because its type may form RC cycles.`});if(!u.isOwningTheRcValue)throw m({token:i.token,errorMessage:`Cannot isolate variable ${a} because it does not own its RC value.`});let f=t.frames.flatMap(p=>p.variables).filter(p=>{var _;return((_=p.isOwningTheSameRcValueAs)==null?void 0:_.id)===u.id&&p.id!==u.id});if(f.length>0){let p=f.map(_=>_.name).join(", ");throw m({token:i.token,errorMessage:`Cannot isolate ${a}, also owned by: ${p}
@@ -10839,7 +10839,7 @@ ${L(d)}`});if(d){let v=d.token.value,E=e.find($=>$.label===v);if(E){if(E.assigne
10839
10839
  ${La(E)}`});p=E}else throw m({token:_.token,errorMessage:`Failed to find "${v}" in the type.`})}if(a.has(p))throw m({token:_.token,errorMessage:`Type member "${p.label}" is already implemented.`});let g=e.indexOf(p),y=R({expr:_,env:r,context:{...i,expectedType:{type:p.type,env:r}}});if(!y.$)throw m({token:_.token,errorMessage:`Failed to evaluate argument expression:
10840
10840
  ${L(_)}`});Yn(y,i),r=y.$.env;let h=y.$.type;if(Uo(p.type,r)||(h=un({type:h,expectedType:p.type,expr:y,env:r})),d&&(d.$=y.$),!ie({type:p.type,env:r},{type:h,env:r}))throw m({token:_.token,errorMessage:`Type mismatch for type member "${p.label}":
10841
10841
  Expected: ${x(p.type)}
10842
- Got: ${x(h)}`});s[g]=(c=y.$)==null?void 0:c.value,l[g]=y,a.add(p)}if(!o)for(let f=0;f<e.length;f++){let p=e[f];if(!a.has(p)){if(!p.defaultValue&&!p.assignedValue)throw m({token:t.token,errorMessage:`Type member "${p.label}" is not provided and has no default value or assigned value.`});s[f]=p.defaultValue??p.assignedValue,l[f]=p.exprs.defaultValueExpr??p.exprs.assignedValueExpr}}return{values:s,pathCollection:[],callerEnv:r,runtimeArgExprsInOrder:l}}var kg=j(()=>{xe();ce();Qt();Je();Ke()});function fb(e,t,n){if(!e.recursiveTypeRef)return;let{functionValue:r,argValues:i}=e.recursiveTypeRef,o=r.calledComptimeFunctionCaches.find(s=>s.argValues.length===i.length&&s.argValues.every((l,u)=>{let c=i[u];return Y(l)&&Y(c)?ie({type:l.value,env:s.env},{type:c.value,env:t},!0):Vn({value:l,env:s.env},{value:c,env:t})}));if(o&&Y(o.value)&&!(z(o.value.value)&&o.value.value.recursiveTypeRef))return o.value.value;if(n!=null&&n.SelfType&&rn(n.SelfType)||n!=null&&n.SelfType&&ze(n.SelfType))return n.SelfType;let a=r.calledComptimeFunctionCaches.find(s=>!(!Y(s.value)||z(s.value.value)&&s.value.value.recursiveTypeRef));if(a&&Y(a.value))return a.value.value}function ni({expr:e,env:t,context:n,givenFunc:r,forMacroExpansion:i}){var h,v,E,$,C,w,k,b,A,I,N,M,V,O,W,P,G,U,X,re,ee,fe,de,Q,pe,Z,me,ke,Fe,yt,le,Ee,ne,Ie,je,it,Mt;let o=e.func,a=e.args,s,l=[];if(r)l=[r];else if(S(o)){let K=R({expr:o,env:t,context:{...n}});if(o=K,(h=K.$)!=null&&h.type)l=[{type:K.$.type,value:K.$.value}];else if(S(K)&&T(K,".",2)){let J=K.args[0];s=K.args[1];let ae=(v=J.$)==null?void 0:v.type;if(!ae)throw m({token:J.token,errorMessage:"Expected to be evaluated."});let Se=(E=J.$)==null?void 0:E.value,De=Y(Se);if(H(s)){let Re=s.token.value;if(De){let Xe=Se.value;l=i_({env:t,context:n,methodName:Re,type:Xe}).map(Wt=>({type:Wt.type,value:Wt.value,args:a}))}else l=Uc({env:t,context:n,methodName:Re,receiverType:ae,isInfixOperatorCall:!1}).map(nt=>{let Wt;if(nt.needsPointerConversion){let ar={tag:"Atom",token:J.token,$:void 0};ar.token={...J.token,value:"&",type:"identifier"},Wt=[{tag:"FnCall",func:ar,args:[J],token:J.token,$:void 0},...a]}else Wt=[J,...a];return{type:nt.type,value:nt.value,needsPointerConversion:nt.needsPointerConversion,args:Wt}})}else{let Re=R({expr:s,env:t,context:{...n}});($=Re.$)!=null&&$.env&&(t=(C=Re.$)==null?void 0:C.env),s=Re;let Xe=(w=s.$)==null?void 0:w.type,nt=(k=s.$)==null?void 0:k.value;if(!Xe)throw m({token:s.token,errorMessage:"Expected to be a function."});l=[{type:Xe,value:nt}],a=[J,...a]}}else throw m({token:o.token,errorMessage:`Expected type for function call, got ${L(K)}`})}else{let K=o.token.value;if(K==="_"){let J=n.expectedType;if(!J||z(J.type))return Xy({expr:e,env:t,context:n});l=[{type:Ln(J.type),value:_e(J.type)}],o.$={env:t,type:l[0].type,value:l[0].value,pathCollection:[]}}else if(bi(K)&&e.isInfix){let J=a[0];if(!J)throw m({token:o.token,errorMessage:`Expected first argument for operator, got:
10842
+ Got: ${x(h)}`});s[g]=(c=y.$)==null?void 0:c.value,l[g]=y,a.add(p)}if(!o)for(let f=0;f<e.length;f++){let p=e[f];if(!a.has(p)){if(!p.defaultValue&&!p.assignedValue)throw m({token:t.token,errorMessage:`Type member "${p.label}" is not provided and has no default value or assigned value.`});s[f]=p.defaultValue??p.assignedValue,l[f]=p.exprs.defaultValueExpr??p.exprs.assignedValueExpr}}return{values:s,pathCollection:[],callerEnv:r,runtimeArgExprsInOrder:l}}var kg=j(()=>{xe();ce();Qt();Je();Ke()});function fb(e,t,n){if(!e.recursiveTypeRef)return;let{functionValue:r,argValues:i}=e.recursiveTypeRef,o=r.calledComptimeFunctionCaches.find(s=>s.argValues.length===i.length&&s.argValues.every((l,u)=>{let c=i[u];return Y(l)&&Y(c)?ie({type:l.value,env:s.env},{type:c.value,env:t},!0):Vn({value:l,env:s.env},{value:c,env:t})}));if(o&&Y(o.value)&&!(z(o.value.value)&&o.value.value.recursiveTypeRef))return o.value.value;if(n!=null&&n.SelfType&&rn(n.SelfType)||n!=null&&n.SelfType&&ze(n.SelfType))return n.SelfType;let a=r.calledComptimeFunctionCaches.find(s=>!(!Y(s.value)||z(s.value.value)&&s.value.value.recursiveTypeRef));if(a&&Y(a.value))return a.value.value}function ni({expr:e,env:t,context:n,givenFunc:r,forMacroExpansion:i}){var h,v,E,$,C,w,k,b,A,I,N,M,V,O,W,P,G,U,X,re,ee,fe,de,Q,pe,Z,me,ke,Fe,yt,le,Ee,ne,Ie,je,it,Mt;let o=e.func,a=e.args,s,l=[];if(r)l=[r];else if(S(o)){let K=R({expr:o,env:t,context:{...n}});if(o=K,(h=K.$)!=null&&h.type)l=[{type:K.$.type,value:K.$.value}];else if(S(K)&&T(K,".",2)){let J=K.args[0];s=K.args[1];let ae=(v=J.$)==null?void 0:v.type;if(!ae)throw m({token:J.token,errorMessage:"Expected to be evaluated."});let Se=(E=J.$)==null?void 0:E.value,De=Y(Se);if(H(s)){let Re=s.token.value;if(De){let Xe=Se.value;l=i_({env:t,context:n,methodName:Re,type:Xe}).map(Wt=>({type:Wt.type,value:Wt.value,args:a}))}else l=Uc({env:t,context:n,methodName:Re,receiverType:ae,isInfixOperatorCall:!1}).map(nt=>{let Wt;if(nt.needsPointerConversion){let ar={tag:"Atom",token:J.token,$:void 0};ar.token={...J.token,value:"&",type:"identifier"},Wt=[{tag:"FnCall",func:ar,args:[J],token:J.token,$:void 0},...a]}else Wt=[J,...a];return{type:nt.type,value:nt.value,needsPointerConversion:nt.needsPointerConversion,args:Wt}})}else{let Re=R({expr:s,env:t,context:{...n}});($=Re.$)!=null&&$.env&&(t=(C=Re.$)==null?void 0:C.env),s=Re;let Xe=(w=s.$)==null?void 0:w.type,nt=(k=s.$)==null?void 0:k.value;if(!Xe)throw m({token:s.token,errorMessage:"Expected to be a function."});l=[{type:Xe,value:nt}],a=[J,...a]}}else throw m({token:o.token,errorMessage:`Expected type for function call, got ${L(K)}`})}else{let K=o.token.value;if(K==="_"){let J=n.expectedType;if(!J||z(J.type))return Xy({expr:e,env:t,context:n});l=[{type:Ln(J.type),value:_e(J.type)}],o.$={env:t,type:l[0].type,value:l[0].value,pathCollection:[]}}else if(Ci(K)&&e.isInfix){let J=a[0];if(!J)throw m({token:o.token,errorMessage:`Expected first argument for operator, got:
10843
10843
  ${L(o)}`});let Se=(b=R({expr:J,env:t,context:{...n,expectedType:void 0}}).$)==null?void 0:b.type;if(!Se)throw m({token:J.token,errorMessage:"Expected to be evaluated."});let De=K;s=o,l=Uc({env:t,context:n,methodName:De,receiverType:Se,isInfixOperatorCall:!0}).map(Xe=>({type:Xe.type,value:Xe.value,needsPointerConversion:Xe.needsPointerConversion}))}else if(K==="Call"&&n.SelfType){let J=_e(n.SelfType);l=[{type:J.type,value:J}]}else{let J=R({expr:o,env:t,context:{...n}});if(o=J,!J.$)throw m({token:o.token,errorMessage:"Failed to evaluate the callee:"});if(Qe(J.$.type)){let ae=J.$.type,Se=ae.fields.findIndex(Re=>Re.label==="Call");if(Se<0)throw m({token:o.token,errorMessage:'Calling a module value which does not have "Call" element is not allowed.'});let De=ae.fields[Se];if(De.assignedValue){let Re=De.assignedValue;$r(Re)?l=Re.fields.map(Xe=>({type:Xe.type,value:Xe})):l=[{type:Re.type,value:Re}]}else throw m({token:o.token,errorMessage:`Calling a module value whose "Call" element doesn't have assigned value is not allowed.`})}else l=[{type:J.$.type,value:J.$.value}]}}let u=l.length===1&&te(l[0].type)&&l[0].type.return.isCompileTimeOnly&&!l[0].type.return.isUnquote&&!Vt(l[0].type.return.type)&&l[0].type.forallParameters.length===0,p=l.length===1&&(te(l[0].type)||(z(l[0].type)||ot(l[0].type))&&!!or(l[0].type))?l.map(K=>({...K,result:{kind:"function",result:void 0}})):l.map(K=>{let J=K.args??a;if(te(K.type))try{let ae=Fo({functionValue:es(K.value),functionType:K.type,expr:mt(e),functionCalleeExpr:o,argExprs:J.map(Se=>mt(Se)),callerEnv:Pc(t),context:{...n,isInFunctionCallCheckingPhase:!0},isMethodCall:!!s,skipSpecialization:!0,skipCtfeExecution:!0});return{...K,result:{kind:"function",result:ae}}}catch(ae){if(ae instanceof fr&&ae.kind==="overflow")throw tn([{token:e.token,errorMessage:`Failed to call the function:
10844
10844
  `},...ae.tokenAndErrorList],ae.isAssertionError);return{...K,result:{kind:"error",error:ae}}}else if((z(K.type)||ot(K.type))&&or(K.type)){let ae=or(K.type);try{let Se=Fo({functionValue:es(K.value),functionType:ae.isFn.callType,expr:mt(e),functionCalleeExpr:o,argExprs:J.map(De=>mt(De)),callerEnv:Pc(t),context:{...n,isInFunctionCallCheckingPhase:!0},isMethodCall:!!s,skipSpecialization:!0,skipCtfeExecution:!0});return{...K,result:{kind:"function",result:Se}}}catch(Se){if(Se instanceof fr&&Se.kind==="overflow")throw tn([{token:e.token,errorMessage:`Failed to call the function:
10845
10845
  `},...Se.tokenAndErrorList],Se.isAssertionError);return{...K,result:{kind:"error",error:Se}}}}else{let ae=K.value;if(Y(ae)&&z(ae.value)&&ae.value.recursiveTypeRef){let Se=fb(ae.value,t,n);Se&&(ae=_e(Se),K.value=ae,K.type=ae.type)}if(Y(ae)&&ze(ae.value))try{let Se=Gu({typeFields:ae.value.fields,functionCalleeExpr:o,argExprs:J,callerEnv:t,context:{...n}});return{...K,result:{kind:"type",result:Se}}}catch(Se){return{...K,result:{kind:"error",error:Se}}}else if(Y(ae)&&qe(ae.value)){let Se=ae.value,De=Se.variants.find(Re=>Re.name===Se.selectedVariantName);if(De)try{let Re=Gu({typeFields:De.fields||[],functionCalleeExpr:o,argExprs:J,callerEnv:t,context:{...n}});return{...K,result:{kind:"type",result:Re}}}catch(Re){return{...K,result:{kind:"error",error:Re}}}else return{...K,result:{kind:"error",error:m({token:e.token,errorMessage:"Enum variant not selected for enum type"})}}}else if(Y(ae)&&ln(ae.value))try{let Se=Gu({typeFields:ae.value.fields,functionCalleeExpr:o,argExprs:J,callerEnv:t,context:{...n},isUnionType:!0});return{...K,result:{kind:"type",result:Se}}}catch(Se){return{...K,result:{kind:"error",error:Se}}}else if(Y(ae)&&Qe(ae.value)){let Se=ae.value;try{let De=hg({moduleExpr:o,moduleType:Se,argExprs:J,callerEnv:t,context:{...n}});return{...K,result:{kind:"module-type",result:De}}}catch(De){return{...K,result:{kind:"error",error:De}}}}else if(Y(ae)&&ht(ae.value)){let Se=ae.value;if(J.some(Re=>S(Re)&&T(Re,":=",2)))try{let Re=$g({traitExpr:o,traitType:Se,argExprs:J,callerEnv:t,context:{...n}});return{...K,result:{kind:"trait-specialization",result:Re}}}catch(Re){return{...K,result:{kind:"error",error:Re}}}try{let Re=bg({traitExpr:o,traitType:Se,argExprs:J,callerEnv:t,context:{...n}});return{...K,result:{kind:"trait-type",result:Re}}}catch(Re){return{...K,result:{kind:"error",error:Re}}}}else if(Y(ae)&&te(ae.value)){let Se=ae.value;try{return og({expr:e,functionType:Se,callerEnv:t,context:{...n}}),{...K,result:{kind:"function-type"}}}catch(De){return{...K,result:{kind:"error",error:De}}}}else if(Y(ae)&&at(ae.value)){let Se=ae.value;try{return ng({expr:e,arrayType:Se,argExprs:J,callerEnv:t,context:{...n}}),{...K,result:{kind:"array-type"}}}catch(De){return{...K,result:{kind:"error",error:De}}}}else if(Y(ae)&&Rn(ae.value)){let Se=ae.value;try{return lg({expr:e,comptimeListType:Se,argExprs:J,callerEnv:t,context:{...n}}),{...K,result:{kind:"array-type"}}}catch(De){return{...K,result:{kind:"error",error:De}}}}else if(Y(ae)&&(z(ae.value)||ot(ae.value))){let Se=ae.value,De=or(Se);if(De)try{return ag({expr:e,fnModuleType:De,wrapperType:Se,callerEnv:t,context:{...n}}),{...K,result:{kind:"closure-type"}}}catch(Re){return{...K,result:{kind:"error",error:Re}}}else if(z(Se)&&Se.recursiveTypeRef)try{let Re=[];for(let Xe of J){let nt=R({expr:Xe,env:t,context:{...n}});if(!nt.$)throw m({token:Xe.token,errorMessage:"Failed to evaluate argument"});t=nt.$.env,Re.push(nt)}return{...K,result:{kind:"type",result:{values:Re.map(Xe=>Xe.$.value),pathCollection:[],runtimeArgExprsInOrder:Re,callerEnv:t}}}}catch(Re){return{...K,result:{kind:"error",error:Re}}}else return{...K,result:{kind:"error",error:m({token:o.token,errorMessage:`Invalid function call on type:
@@ -10878,9 +10878,9 @@ ${L(r)}`});t=i.$.env;let o=(u=i.$)==null?void 0:u.variableName;if(!o)throw m({to
10878
10878
  ${L(i)}
10879
10879
 
10880
10880
  Original expression:
10881
- ${L(r)}`});let a=i.$.type,l=z(a)&&a.resolvedConcreteType&&!rt(a)?a.resolvedConcreteType:a;if(ut(l))if(st(l)){let p=pb(i);if(p){let _=nr(p);t=Cr(i,t,!0);let d=R({expr:_,env:t,context:{...n}});return S(d)?(Ni(e,d),e):d}else return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:se,pathCollection:[]},e}else if(at(l)){let p=_b(i);if(p){let _=nr(p);t=Cr(i,t,!0);let d=R({expr:_,env:t,context:{...n}});return S(d)?(Ni(e,d),e):d}else return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:se,pathCollection:[]},e}else{if(z(l)&&!rt(l))return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:void 0,pathCollection:[]},e;{let p=(c=i.$)==null?void 0:c.variableName;if(p){let v=ue(t,p),E=v.length?v[v.length-1]:void 0;if(E&&!E.isOwningTheRcValue)return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:void 0,pathCollection:[]},e}let _=nr(`(${L(i)}).___drop()`),d=ni({env:t,context:{...n},expr:_});if(!((f=d.$)!=null&&f.env))throw m({token:e.token,errorMessage:`Failed to get updated environment after evaluating "${F.___drop[0]}" method call:
10881
+ ${L(r)}`});let a=i.$.type,l=z(a)&&a.resolvedConcreteType&&!rt(a)?a.resolvedConcreteType:a;if(ut(l))if(st(l)){let p=pb(i);if(p){let _=nr(p);t=Cr(i,t,!0);let d=R({expr:_,env:t,context:{...n}});return S(d)?(xi(e,d),e):d}else return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:se,pathCollection:[]},e}else if(at(l)){let p=_b(i);if(p){let _=nr(p);t=Cr(i,t,!0);let d=R({expr:_,env:t,context:{...n}});return S(d)?(xi(e,d),e):d}else return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:se,pathCollection:[]},e}else{if(z(l)&&!rt(l))return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:void 0,pathCollection:[]},e;{let p=(c=i.$)==null?void 0:c.variableName;if(p){let v=ue(t,p),E=v.length?v[v.length-1]:void 0;if(E&&!E.isOwningTheRcValue)return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:void 0,pathCollection:[]},e}let _=nr(`(${L(i)}).___drop()`),d=ni({env:t,context:{...n},expr:_});if(!((f=d.$)!=null&&f.env))throw m({token:e.token,errorMessage:`Failed to get updated environment after evaluating "${F.___drop[0]}" method call:
10882
10882
  ${L(_)}`});let y=ue(d.$.env,o).at(-1);if(!y)throw m({token:e.token,errorMessage:`Variable "${o}" not found in environment after evaluating "${F.___drop[0]}" method call:
10883
- ${L(_)}`});let h=It(d.$.env,y,{...y,consumedAtToken:e.token});return d.$.env=h,d}}else return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:void 0,pathCollection:[]},e}var Fg=j(()=>{ft();xe();ce();Ci();Ae();Je();xn();ge();oa();Ke();Gt()});function db(e){var i;if(!((i=e.$)!=null&&i.type)||!st(e.$.type))throw new Error("Expected tuple type for dup generation");if(!e.$.variableName)throw m({token:e.token,errorMessage:`Expected variable name for drop generation:
10883
+ ${L(_)}`});let h=It(d.$.env,y,{...y,consumedAtToken:e.token});return d.$.env=h,d}}else return t=Cr(i,t,!0),e.$={env:t,type:se.type,value:void 0,pathCollection:[]},e}var Fg=j(()=>{ft();xe();ce();ki();Ae();Je();xn();ge();oa();Ke();Gt()});function db(e){var i;if(!((i=e.$)!=null&&i.type)||!st(e.$.type))throw new Error("Expected tuple type for dup generation");if(!e.$.variableName)throw m({token:e.token,errorMessage:`Expected variable name for drop generation:
10884
10884
  ${L(e)}`});let n=e.$.type.fields.map((o,a)=>({index:a,element:o,needsDup:ut(o.type)}));return n.every(({needsDup:o})=>!o)?"":`begin(
10885
10885
  ${n.map(({index:o,needsDup:a})=>{var s;return a?`${F.__yo_dup_tuple_element[0]}(${(s=e.$)==null?void 0:s.variableName}, ${o})`:""}).filter(o=>o.length>0).join(`,
10886
10886
  `)}
@@ -10888,8 +10888,8 @@ ${L(e)}`});let n=e.$.type.fields.map((o,a)=>({index:a,element:o,needsDup:ut(o.ty
10888
10888
  ${L(e)}`});let t=e.$.type,n=t.childType;if(!ut(n))return"";if(wt(t.length)){let i=t.length.value;return`begin(
10889
10889
  ${Array.from({length:Number(i)},(o,a)=>{var s;return`${F.__yo_dup_array_element[0]}(${(s=e.$)==null?void 0:s.variableName}, ${a})`}).join(", ")}
10890
10890
  )`}else return""}function Lg({expr:e,env:t,context:n}){var s;He(e,F.___dup,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${F.___dup[0]}":
10891
- ${L(r)}`});t=i.$.env;let o=i.$.type,a=z(o)&&o.resolvedConcreteType?o.resolvedConcreteType:o;if(ut(a))if(st(a)){let l=db(i);if(l){let u=nr(l),c=R({expr:u,env:t,context:{...n}});return S(c)?(Ni(e,c),e):c}else return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e}else if(at(a)){let l=mb(i);if(l){let u=nr(l),c=R({expr:u,env:t,context:{...n}});return S(c)?(Ni(e,c),e):c}else return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e}else{if(z(a)&&!rt(a))return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e;{let l=nr(`(${L(i)}).___dup()`),u=ni({env:t,context:{...n},expr:l}),c=(s=u.$)==null?void 0:s.variableName;if(!c||!u.$)throw m({token:e.token,errorMessage:`Failed to evaluate the "${F.___dup[0]}" method call:
10892
- ${L(l)}`});let f=ue(u.$.env,c);if(f.length){let p=f[f.length-1];if(p.isOwningTheRcValue){let _=It(u.$.env,p,{...p,isOwningTheRcValue:!1});u.$.env=_}}return u}}return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e}var Ag=j(()=>{ft();xe();ce();Ci();Ae();Je();ge();oa();Ke();Gt()});function Ig({expr:e,env:t,context:n}){He(e,F.__yo_expr_is_atom,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10891
+ ${L(r)}`});t=i.$.env;let o=i.$.type,a=z(o)&&o.resolvedConcreteType?o.resolvedConcreteType:o;if(ut(a))if(st(a)){let l=db(i);if(l){let u=nr(l),c=R({expr:u,env:t,context:{...n}});return S(c)?(xi(e,c),e):c}else return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e}else if(at(a)){let l=mb(i);if(l){let u=nr(l),c=R({expr:u,env:t,context:{...n}});return S(c)?(xi(e,c),e):c}else return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e}else{if(z(a)&&!rt(a))return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e;{let l=nr(`(${L(i)}).___dup()`),u=ni({env:t,context:{...n},expr:l}),c=(s=u.$)==null?void 0:s.variableName;if(!c||!u.$)throw m({token:e.token,errorMessage:`Failed to evaluate the "${F.___dup[0]}" method call:
10892
+ ${L(l)}`});let f=ue(u.$.env,c);if(f.length){let p=f[f.length-1];if(p.isOwningTheRcValue){let _=It(u.$.env,p,{...p,isOwningTheRcValue:!1});u.$.env=_}}return u}}return e.$={env:t,type:i.$.type,value:void 0,pathCollection:[]},e}var Ag=j(()=>{ft();xe();ce();ki();Ae();Je();ge();oa();Ke();Gt()});function Ig({expr:e,env:t,context:n}){He(e,F.__yo_expr_is_atom,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
10893
10893
  ${L(r)}`});if(!Nn(i.$.type))throw m({token:r.token,errorMessage:`Expected expression type for "${e.func.token.value}" argument, got:
10894
10894
  ${L(r)}`});let o=i.$.value;if(!o)throw m({token:r.token,errorMessage:`Expected expression value for "${e.func.token.value}" argument, got:
10895
10895
  ${L(r)}`});let a=dr(o)?on(H(o.value)):oe(Bt(),{env:i.$.env,context:n});return e.$={env:i.$.env,type:a.type,value:a,pathCollection:[],isAccessingProperty:!1},e}function Sg({expr:e,env:t,context:n}){He(e,F.__yo_expr_is_fn_call,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the argument expression for "${e.func.token.value}":
@@ -10949,10 +10949,10 @@ ${L(e)}`});let r=e.args[0],i=e.args[1],o=H(i)&&i.token.value==="_",a=R({expr:r,e
10949
10949
  ${L(r)}`});if(!Y(a.$.value))throw m({token:r.token,errorMessage:`Expected type for element type, got:
10950
10950
  ${L(r)}
10951
10951
 
10952
- If you are creating an array value with 1 element, please consider adding a "," in the end, like [1,]`});let s=a.$.value.value;if(o){let p=`_array_length_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,_=oe(_n(),{variableName:p,env:a.$.env,context:n}),{env:d}=Be({env:a.$.env,variable:{name:p,value:[_],type:_n(),isCompileTimeOnly:!0,token:i.token,initializedAtToken:i.token,consumedAtToken:void 0,isOwningTheRcValue:!1}}),g=xi(s,_),y=_e(g);return e.$={env:d,type:y.type,value:y,pathCollection:[]},e}let l=R({expr:i,env:t,context:{...n,expectedType:{type:_n(),env:t}}});if(!l.$)throw m({token:i.token,errorMessage:`Failed to evaluate the length expression:
10952
+ If you are creating an array value with 1 element, please consider adding a "," in the end, like [1,]`});let s=a.$.value.value;if(o){let p=`_array_length_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,_=oe(_n(),{variableName:p,env:a.$.env,context:n}),{env:d}=Be({env:a.$.env,variable:{name:p,value:[_],type:_n(),isCompileTimeOnly:!0,token:i.token,initializedAtToken:i.token,consumedAtToken:void 0,isOwningTheRcValue:!1}}),g=Vi(s,_),y=_e(g);return e.$={env:d,type:y.type,value:y,pathCollection:[]},e}let l=R({expr:i,env:t,context:{...n,expectedType:{type:_n(),env:t}}});if(!l.$)throw m({token:i.token,errorMessage:`Failed to evaluate the length expression:
10953
10953
  ${L(i)}`});if(!ie({type:_n(),env:t},{type:l.$.type,env:t}))throw m({token:i.token,errorMessage:`Expected usize for length, got:
10954
10954
  ${L(i)}`});let u=l.$.value;if(!u)throw m({token:i.token,errorMessage:`Expected compile-time known value for length, got:
10955
- ${L(i)}`});Ge(u)&&(u.type=_n());let c=xi(s,u),f=_e(c);return e.$={env:l.$.env,type:f.type,value:f,pathCollection:[]},e}var Mh=j(()=>{ft();xe();ce();Qt();dt();ge();Ke()});function Oh({expr:e,env:t,context:n}){return xu({expr:e,env:t,context:n})}var Rh=j(()=>{io()});function Ph({expr:e,env:t,context:n}){He(e,D.ComptimeList,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the element type expression:
10955
+ ${L(i)}`});Ge(u)&&(u.type=_n());let c=Vi(s,u),f=_e(c);return e.$={env:l.$.env,type:f.type,value:f,pathCollection:[]},e}var Mh=j(()=>{ft();xe();ce();Qt();dt();ge();Ke()});function Oh({expr:e,env:t,context:n}){return xu({expr:e,env:t,context:n})}var Rh=j(()=>{io()});function Ph({expr:e,env:t,context:n}){He(e,D.ComptimeList,1);let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the element type expression:
10956
10956
  ${L(r)}`});if(!Y(i.$.value))throw m({token:r.token,errorMessage:`Expected type for element type, got:
10957
10957
  ${L(r)}`});let o=i.$.value.value,a=ws(o),s=_e(a);return e.$={env:i.$.env,type:s.type,value:s,pathCollection:[]},e}var Uh=j(()=>{xe();ce();dt();ge();Ke()});function zh({expr:e,env:t,context:n}){if(e.args.length!==1)throw m({token:e.token,errorMessage:`Concrete type constructor expects exactly 1 argument, got ${e.args.length}. Usage: Concrete(T)`});let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!i.$)throw m({token:r.token,errorMessage:`Failed to evaluate the concrete type expression for Concrete:
10958
10958
  ${L(r)}`});if(t=i.$.env,!Y(i.$.value))throw m({token:r.token,errorMessage:`Concrete type constructor expects a type as its argument, but got:
@@ -10991,7 +10991,7 @@ ${L(e)}`});return ts({expr:e,env:t,context:n})}var tv=j(()=>{xe();ce();Qu()});fu
10991
10991
  ${L(r)}`});if(!Y(i.$.value))throw m({token:r.token,errorMessage:`Expected type for element type, got:
10992
10992
  ${L(r)}
10993
10993
 
10994
- If you are creating an array value with 1 element, please consider adding a "," in the end, like [1,]`});let o=i.$.value.value,a=cu(o),s=_e(a);return e.$={env:i.$.env,type:s.type,value:s,pathCollection:[]},e}var rv=j(()=>{xe();ce();dt();ge();Ke()});function ov({lhsExpr:e,env:t,context:n,selfType:r}){if(H(e)&&e.token.value==="Self")return{env:t,someType:r,isSelf:!0};if(H(e)){let a=e.token.value,s=ue(t,a);if(s.length>0){let f=s[s.length-1];if(f.value&&Y(f.value[0])&&z(f.value[0].value))return{env:t,someType:f.value[0].value,isSelf:!1}}let l=Or(Ht(),a,{env:t,context:n}),u=_e(l),{env:c}=Be({env:t,variable:{name:a,type:Ln(l),isCompileTimeOnly:!0,value:[u],token:e.token,initializedAtToken:e.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1},allowVariableShadowing:!0});return{env:c,someType:l,isSelf:!1}}let i=R({expr:e,env:t,context:{...n,SelfType:r}});if(!i.$||!i.$.value||!Y(i.$.value))throw m({token:e.token,errorMessage:"Expected type for left-hand side of where clause constraint."});let o=i.$.value;if(!z(o.value))throw m({token:e.token,errorMessage:`Expected SomeType for left-hand side of where clause constraint, got ${x(o.value)}`});return{env:i.$.env,someType:o.value,isSelf:!1}}function bb({lhsExpr:e,traitExpr:t,env:n,context:r,selfType:i,traitType:o}){let a=!1,s=t;S(t)&&T(t,"!")&&t.args.length===1&&(a=!0,s=t.args[0]);let l;try{l=ov({lhsExpr:e,env:n,context:r,selfType:i})}catch{return{env:n,success:!1}}n=l.env;let u;try{u=R({expr:s,env:n,context:{...r,SelfType:i}})}catch{return{env:n,success:!1}}if(!u.$||!u.$.value||!Y(u.$.value))return{env:n,success:!1};n=u.$.env;let c=u.$.value;if(!ht(c.value))throw m({token:s.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(c.value)}`});let f=c.value;if(f.receiverType)throw m({token:s.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});if(l.isSelf&&(o.selfConstraints||(o.selfConstraints=[]),o.negativeSelfConstraints||(o.negativeSelfConstraints=[]),a?o.negativeSelfConstraints.push(f):o.selfConstraints.push(f)),!l.isSelf){let p=n.frames.length-1;a?l.someType.negativeTraits.some(_=>_.traitType.id===f.id)||l.someType.negativeTraits.push({traitType:f,frameLevel:p}):l.someType.requiredTraits.some(_=>_.traitType.id===f.id)||l.someType.requiredTraits.push({traitType:f,frameLevel:p})}return n=Ti({env:n,someType:l.someType,traitType:f,isNegated:a}),{env:n,success:!0}}function iv({constraintExprs:e,env:t,context:n,selfType:r,traitType:i,collectPendingTraits:o=!1}){let a=[];for(let s of e){if(!S(s)||!T(s,"<:",2))throw m({token:s.token,errorMessage:`Expected constraint in the form "T <: Trait" or "T <: (Trait1, Trait2)", got: ${L(s)}`});let l=s.args[0],u=s.args[1],c;try{c=ov({lhsExpr:l,env:t,context:n,selfType:r})}catch{if(o){a.push({lhsExpr:l,traitExpr:u,originalConstraintExpr:s});continue}throw m({token:l.token,errorMessage:"Expected type for left-hand side of where clause constraint."})}t=c.env;let f=[];S(u)&&T(u,D.tuple)?f.push(...u.args):f.push(u);for(let p of f){let _=!1,d=p;S(p)&&T(p,"!")&&p.args.length===1&&(_=!0,d=p.args[0]);let g;try{g=R({expr:d,env:t,context:{...n,SelfType:r,SelfTraitType:i}})}catch(v){if(o){a.push({lhsExpr:l,traitExpr:p,originalConstraintExpr:s});continue}throw v}if(!g.$||!g.$.value||!Y(g.$.value)){if(o){a.push({lhsExpr:l,traitExpr:p,originalConstraintExpr:s});continue}throw m({token:d.token,errorMessage:"Expected trait type for right-hand side of where clause constraint."})}t=g.$.env;let y=g.$.value;if(!ht(y.value))throw m({token:d.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(y.value)}`});let h=y.value;if(h.receiverType)throw m({token:d.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});c.isSelf&&(i.selfConstraints||(i.selfConstraints=[]),i.negativeSelfConstraints||(i.negativeSelfConstraints=[]),_?i.negativeSelfConstraints.push(h):i.selfConstraints.push(h)),t=Ti({env:t,someType:c.someType,traitType:h,isNegated:_})}}return{env:t,pendingTraits:a}}function Cb({expr:e,traitFieldIndex:t,env:n,context:r,isForEvaluatingTraitType:i}){var h,v,E,$,C,w;let o,a=e,s,l,u,c,f,p,_;if(S(e)&&T(e,"?=",2)&&(u=e.args[1],a=e.args[0]),S(a)&&(T(a,"=",2)||T(a,"::",2)||T(a,":=",2))){if(T(a,"::",2))throw m({token:a.token,errorMessage:`Cannot use "::" for trait field. Use ":=" instead.
10994
+ If you are creating an array value with 1 element, please consider adding a "," in the end, like [1,]`});let o=i.$.value.value,a=cu(o),s=_e(a);return e.$={env:i.$.env,type:s.type,value:s,pathCollection:[]},e}var rv=j(()=>{xe();ce();dt();ge();Ke()});function ov({lhsExpr:e,env:t,context:n,selfType:r}){if(H(e)&&e.token.value==="Self")return{env:t,someType:r,isSelf:!0};if(H(e)){let a=e.token.value,s=ue(t,a);if(s.length>0){let f=s[s.length-1];if(f.value&&Y(f.value[0])&&z(f.value[0].value))return{env:t,someType:f.value[0].value,isSelf:!1}}let l=Or(Ht(),a,{env:t,context:n}),u=_e(l),{env:c}=Be({env:t,variable:{name:a,type:Ln(l),isCompileTimeOnly:!0,value:[u],token:e.token,initializedAtToken:e.token,consumedAtToken:void 0,isOwningTheRcValue:!1,isOwningTheSameRcValueAs:void 0,isReassignable:!1},allowVariableShadowing:!0});return{env:c,someType:l,isSelf:!1}}let i=R({expr:e,env:t,context:{...n,SelfType:r}});if(!i.$||!i.$.value||!Y(i.$.value))throw m({token:e.token,errorMessage:"Expected type for left-hand side of where clause constraint."});let o=i.$.value;if(!z(o.value))throw m({token:e.token,errorMessage:`Expected SomeType for left-hand side of where clause constraint, got ${x(o.value)}`});return{env:i.$.env,someType:o.value,isSelf:!1}}function bb({lhsExpr:e,traitExpr:t,env:n,context:r,selfType:i,traitType:o}){let a=!1,s=t;S(t)&&T(t,"!")&&t.args.length===1&&(a=!0,s=t.args[0]);let l;try{l=ov({lhsExpr:e,env:n,context:r,selfType:i})}catch{return{env:n,success:!1}}n=l.env;let u;try{u=R({expr:s,env:n,context:{...r,SelfType:i}})}catch{return{env:n,success:!1}}if(!u.$||!u.$.value||!Y(u.$.value))return{env:n,success:!1};n=u.$.env;let c=u.$.value;if(!ht(c.value))throw m({token:s.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(c.value)}`});let f=c.value;if(f.receiverType)throw m({token:s.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});if(l.isSelf&&(o.selfConstraints||(o.selfConstraints=[]),o.negativeSelfConstraints||(o.negativeSelfConstraints=[]),a?o.negativeSelfConstraints.push(f):o.selfConstraints.push(f)),!l.isSelf){let p=n.frames.length-1;a?l.someType.negativeTraits.some(_=>_.traitType.id===f.id)||l.someType.negativeTraits.push({traitType:f,frameLevel:p}):l.someType.requiredTraits.some(_=>_.traitType.id===f.id)||l.someType.requiredTraits.push({traitType:f,frameLevel:p})}return n=Ei({env:n,someType:l.someType,traitType:f,isNegated:a}),{env:n,success:!0}}function iv({constraintExprs:e,env:t,context:n,selfType:r,traitType:i,collectPendingTraits:o=!1}){let a=[];for(let s of e){if(!S(s)||!T(s,"<:",2))throw m({token:s.token,errorMessage:`Expected constraint in the form "T <: Trait" or "T <: (Trait1, Trait2)", got: ${L(s)}`});let l=s.args[0],u=s.args[1],c;try{c=ov({lhsExpr:l,env:t,context:n,selfType:r})}catch{if(o){a.push({lhsExpr:l,traitExpr:u,originalConstraintExpr:s});continue}throw m({token:l.token,errorMessage:"Expected type for left-hand side of where clause constraint."})}t=c.env;let f=[];S(u)&&T(u,D.tuple)?f.push(...u.args):f.push(u);for(let p of f){let _=!1,d=p;S(p)&&T(p,"!")&&p.args.length===1&&(_=!0,d=p.args[0]);let g;try{g=R({expr:d,env:t,context:{...n,SelfType:r,SelfTraitType:i}})}catch(v){if(o){a.push({lhsExpr:l,traitExpr:p,originalConstraintExpr:s});continue}throw v}if(!g.$||!g.$.value||!Y(g.$.value)){if(o){a.push({lhsExpr:l,traitExpr:p,originalConstraintExpr:s});continue}throw m({token:d.token,errorMessage:"Expected trait type for right-hand side of where clause constraint."})}t=g.$.env;let y=g.$.value;if(!ht(y.value))throw m({token:d.token,errorMessage:`Expected trait type for right-hand side of where clause constraint, got: ${x(y.value)}`});let h=y.value;if(h.receiverType)throw m({token:d.token,errorMessage:"Trait type in where clause already has a receiver type assigned."});c.isSelf&&(i.selfConstraints||(i.selfConstraints=[]),i.negativeSelfConstraints||(i.negativeSelfConstraints=[]),_?i.negativeSelfConstraints.push(h):i.selfConstraints.push(h)),t=Ei({env:t,someType:c.someType,traitType:h,isNegated:_})}}return{env:t,pendingTraits:a}}function Cb({expr:e,traitFieldIndex:t,env:n,context:r,isForEvaluatingTraitType:i}){var h,v,E,$,C,w;let o,a=e,s,l,u,c,f,p,_;if(S(e)&&T(e,"?=",2)&&(u=e.args[1],a=e.args[0]),S(a)&&(T(a,"=",2)||T(a,"::",2)||T(a,":=",2))){if(T(a,"::",2))throw m({token:a.token,errorMessage:`Cannot use "::" for trait field. Use ":=" instead.
10995
10995
  All trait fields are compile-time only by default.`});f=a.args[1],a=a.args[0]}if(u&&f)throw m({token:e.token,errorMessage:"Cannot have both default value and required value for trait field."});if(S(a)&&T(a,":",2)){if(s=a.args[0],l=a.args[1],S(s)&&T(s,D.comptime,1))throw m({token:s.token,errorMessage:'No need to use "comptime" modifier. All trait fields are compile-time only by default.'});if(!H(s)&&!Dt(s))throw m({token:s.token,errorMessage:`Expected identifier for tuple field label, got ${L(s)}`});o=s.token.value}else{if(S(a)&&T(a,D.comptime,1))throw m({token:a.token,errorMessage:'No need to use "comptime" modifier. All trait fields are compile-time only by default.'});if(!u&&!f)throw m({token:e.token,errorMessage:`Expected label for trait field, got ${L(a)}`});if(s=a,!Dt(s))throw m({token:s.token,errorMessage:`Expected identifier for trait field label, got ${L(s)}`});if(!H(s)&&!Dt(s))throw m({token:s.token,errorMessage:`Expected identifier for trait field label, got ${L(s)}`});o=s.token.value}let d=(h=r.expectedType)==null?void 0:h.type,g;if(d&&ht(d)){let k=d.fields[t];if(!k)throw m({token:e.token,errorMessage:`Failed to get the field at index ${t}`});g=k.type}if(l){let k=R({expr:l,env:n,context:{...r,expectedType:g?{type:g,env:n}:void 0}});(v=k.$)!=null&&v.env&&(n=(E=k.$)==null?void 0:E.env);let b=($=k.$)==null?void 0:$.value;if(!Y(b))throw m({token:l.token,errorMessage:`Expected type for trait field, got ${L(l)}`});_=b.value}if(f){let k=_?{type:_,env:n}:g?{type:g,env:n}:void 0,b=R({expr:f,env:n,context:{...r,expectedType:k}});if(!b.$)throw m({token:f.token,errorMessage:`Failed to evaluate required value expression: ${L(f)}`});if(n=(C=b.$)==null?void 0:C.env,p=b.$.value,!p)throw m({token:f.token,errorMessage:`Expected compile-time known value for required value, got ${L(f)}`});let A=b.$.type;if(k){if(!ie({type:k.type,env:n},{type:A,env:n}))throw m({token:f.token,errorMessage:`Assigned value type mismatch:
10996
10996
  Expected type: ${x(k.type)}
10997
10997
  Given type: ${x(A)}`});_=k.type}else _=A}if(u){let k=_?{type:_,env:n}:g?{type:g,env:n}:void 0,b=R({expr:u,env:n,context:{...r,expectedType:k}});if(!b.$)throw m({token:u.token,errorMessage:`Failed to evaluate default value expression: ${L(u)}`});if(n=b.$.env,c=(w=b.$)==null?void 0:w.value,!c)throw m({token:u.token,errorMessage:`Expected compile-time known value for default value, got ${L(u)}`});let A=b.$.type;if(k){if(!ie({type:k.type,env:n},{type:A,env:n}))throw m({token:u.token,errorMessage:`Default value type mismatch:
@@ -11014,23 +11014,23 @@ ${L(e)}`});let c=e.args[0],f=e.args[1],p=[];S(c)&&T(c,D.tuple)?p=c.args:p=[c];le
11014
11014
  Expected: "${ne.label}"
11015
11015
  Got: "${Ie}"`})}for(let le=0;le<i.forallParameters.length;le++){let Ee=_[le],ne=i.forallParameters[le],{env:Ie}=Be({env:t,variable:{name:ne.label,type:ne.type,isCompileTimeOnly:ne.isCompileTimeOnly,value:[oe(ne.type,{variableName:ne.label,env:t,context:n})],token:(Ee==null?void 0:Ee.token)??Ne,initializedAtToken:(Ee==null?void 0:Ee.token)??Ne,consumedAtToken:void 0,isOwningTheRcValue:!1},allowVariableShadowing:!0});t=Ie,Ee&&(Ee.$={env:t,type:ne.type,value:oe(ne.type,{variableName:ne.label,env:t,context:n}),pathCollection:[]})}let h=i.implicitParameters.some(le=>le.isEffectRowSpread),v,E;if(h&&d.length>0){v=[];for(let le of d)if(S(le)&&T(le,":",2)){let Ee=le.args[0],ne=le.args[1];if(!H(Ee))throw m({token:Ee.token,errorMessage:`Expected identifier for effect name, got ${L(Ee)}`});let Ie=Ee.token.value,je=R({expr:mt(ne),env:y,context:{...n,isEvaluatingFunctionType:!0}});if(!((ee=je.$)!=null&&ee.value)||!Y(je.$.value))throw m({token:ne.token,errorMessage:`Expected a type for effect parameter "${Ie}", got ${L(ne)}`});let it=je.$.value.value;v.push({label:Ie,type:it,isCompileTimeOnly:!0,isImplicit:!0,isOwningTheRcValue:!1,isQuote:!1,exprs:{expr:le,labelExpr:Ee,typeExpr:ne,defaultValueExpr:void 0}})}else if(H(le)){let Ee=le.token.value,Ie=ue(y,Ee).at(-1);if(!Ie)throw m({token:le.token,errorMessage:`Variable "${Ee}" not found. Cannot infer type for using() parameter.`});v.push({label:Ee,type:Ie.type,isCompileTimeOnly:!0,isImplicit:!0,isOwningTheRcValue:!1,isQuote:!1,exprs:{expr:le,labelExpr:le,typeExpr:le,defaultValueExpr:void 0}})}else throw m({token:le.token,errorMessage:`Expected "name : Type" or identifier in using(), got ${L(le)}`});E=Xi(v);for(let le of i.implicitParameters)le.isEffectRowSpread&&z(le.type)&&le.type.isEffectsRow&&(le.type.resolvedConcreteType=E)}else if(d.length>0){let le=[];for(let ne of d)if(S(ne)&&T(ne,":",2)){let Ie=ne.args[0],je=ne.args[1];if(!H(Ie))throw m({token:Ie.token,errorMessage:`Expected identifier for effect name, got ${L(Ie)}`});let it=R({expr:mt(je),env:y,context:{...n,isEvaluatingFunctionType:!0}});if(!((fe=it.$)!=null&&fe.value)||!Y(it.$.value))throw m({token:je.token,errorMessage:`Expected a type for effect parameter "${Ie.token.value}", got ${L(je)}`});le.push({name:Ie.token.value,type:it.$.value.value,nameExpr:Ie})}else if(H(ne))le.push({name:ne.token.value,type:void 0,nameExpr:ne});else throw m({token:ne.token,errorMessage:`Expected "name : Type" or identifier in using(), got ${L(ne)}`});if(le.some(ne=>ne.type!==void 0)){if(le.length!==i.implicitParameters.length)throw m({token:e.token,errorMessage:`Effect row mismatch: closure declares ${le.length} effects, but call site resolved ${i.implicitParameters.length} effects.`});let ne=new Set,Ie=[];for(let je=0;je<le.length;je++){let it=le[je];if(!it.type){Ie.push({...i.implicitParameters[je],label:it.name,exprs:{...i.implicitParameters[je].exprs,expr:it.nameExpr,labelExpr:it.nameExpr}}),ne.add(je);continue}let Mt=!1;for(let K=0;K<i.implicitParameters.length;K++){if(ne.has(K))continue;let J=i.implicitParameters[K];if(ie({type:it.type,env:y},{type:J.type,env:y})){Ie.push({...J,label:it.name,exprs:{...J.exprs,expr:it.nameExpr,labelExpr:it.nameExpr}}),ne.add(K),Mt=!0;break}}if(!Mt)throw m({token:it.nameExpr.token,errorMessage:`Effect row type mismatch for "${it.name}": closure declares ${x(it.type)}, but no matching resolved effect found.`})}v=Ie,E=Xi(v)}else{if(d.length!==i.implicitParameters.length)throw m({token:e.token,errorMessage:`Expected ${i.implicitParameters.length} implicit parameters in using(...), got ${d.length}`});v=i.implicitParameters}}else v=i.implicitParameters;let $=[];for(let le=0;le<v.length;le++){let Ee=v[le],ne=E?(de=Ee.exprs)==null?void 0:de.labelExpr:d[le],Ie=Ee.label;ne&&H(ne)&&(Ie=ne.token.value);let je;if(te(Ee.type)){let ae=(Q=i.implicitParameters[le])==null?void 0:Q.label,Se=[Ee.label];ae&&ae!==Ee.label&&Se.push(ae);for(let De of Se){let Re=ue(y,De),Xe=Re[Re.length-1];if(Xe!=null&&Xe.value&&Xe.value.length>0){let nt=Xe.value[0];if(nt&&$e(nt)){je=nt;break}}}if(!je){let Re=hr(y,Xe=>{var nt;return Xe.isImplicit===!0&&Xe.isCompileTimeOnly===!0&&$e((nt=Xe.value)==null?void 0:nt[0])&&ie({type:Ee.type,env:y},{type:Xe.type,env:y})}).at(-1);(pe=Re==null?void 0:Re.value)!=null&&pe[0]&&$e(Re.value[0])&&(je=Re.value[0])}}let it=je||oe(Ee.type,{variableName:Ie,env:t,context:n}),Mt=n.isInsideIoAsyncCall&&o&&te(Ee.type)&&!je;if(Mt&&$.push({name:Ie,type:Ee.type,token:(ne==null?void 0:ne.token)??Ne}),!Mt&&n.isInsideIoAsyncCall&&o&&Qe(Ee.type)&&!je){let ae=Ee.type;for(let Se of ae.fields)te(Se.type)&&$.push({name:Se.label,type:Se.type,token:(ne==null?void 0:ne.token)??Ne})}let{env:J}=Be({env:t,variable:{name:Ie,type:Ee.type,isCompileTimeOnly:!Mt,isImplicit:!0,value:Mt?void 0:[it],token:(ne==null?void 0:ne.token)??Ne,initializedAtToken:(ne==null?void 0:ne.token)??Ne,consumedAtToken:void 0,isOwningTheRcValue:!1,isEffectParam:Mt||void 0},allowVariableShadowing:!0});t=J,ne&&(ne.$={env:t,type:Ee.type,value:Mt?void 0:it,pathCollection:[]})}for(let le=0;le<g.length;le++){let Ee=g[le],ne=i.parameters[le];if(ne.isCompileTimeOnly){if(!H(Ee))throw m({token:Ee.token,errorMessage:`Expected parameter name for compile-time parameter, got ${L(Ee)}`});let Mt=Ee.token.value;if(Mt!=="_"&&Mt!==ne.label)throw m({token:Ee.token,errorMessage:`Compile-time parameter name must match expected name.
11016
11016
  Expected: "${ne.label}"
11017
- Got: "${Mt}"`})}let Ie=Ee.token.value,je=ne.label,{env:it}=Be({env:t,variable:{name:Ie,type:ne.type,isCompileTimeOnly:ne.isCompileTimeOnly,value:ne.isCompileTimeOnly?[oe(ne.type,{variableName:ne.label,env:t,context:n})]:void 0,token:Ee.token,initializedAtToken:Ee.token,consumedAtToken:void 0,isOwningTheRcValue:ne.isOwningTheRcValue,parameterAlias:Ie!==je?je:void 0}});t=it,Ee.$={env:t,type:ne.type,value:ne.isCompileTimeOnly?oe(ne.type,{variableName:ne.label,env:t,context:n}):void 0,pathCollection:[]}}let C=t.frames[t.frames.length-1],w={...i,forallParameters:i.forallParameters,implicitParameters:E?v:v.map((le,Ee)=>{let ne=d[Ee];if(ne&&H(ne)){let Ie=ne.token.value;if(Ie!==le.label)return{...le,label:Ie}}return le}),parameters:i.parameters.map((le,Ee)=>{if(le.isCompileTimeOnly)return le;{let ne=g[Ee];return{...le,label:H(ne)?ne.token.value:le.label,exprs:{...le.exprs,expr:ne,labelExpr:ne,typeExpr:le.exprs.typeExpr,defaultValueExpr:void 0}}}}),return:{...i.return,typeExpr:i.return.typeExpr},parametersFrame:C,env:Eu(i.env)};if((Z=w.whereClauseExprs)!=null&&Z.length){let le=w.whereClauseExprs.map(ne=>mt(ne));t=wo({constraintExprs:le,env:t,context:{...n,isEvaluatingFunctionType:!0}}).env}let k={tag:"Function",type:w,body:f,frameLevel:t.frames.length-1,funcId:`fn_${Nt(t.modulePath)}`,definitionSiteEnclosingFunctionType:((me=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:me.kind)==="function-body"?n.isEvaluatingFunctionBodyOrAsyncBlock.type:void 0,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},b=!!a,A=_.length>0||i.parameters.some(le=>lt(le.type))||i.SelfType&&lt(i.SelfType),I,N;if(A)Ef({functionBodyExpr:f,functionType:i,functionValue:k,env:t,context:n}),f.$={env:t,type:i.return.type,value:i.return.isCompileTimeOnly?oe(i.return.type,{variableName:"function_body",env:t,context:n}):void 0,pathCollection:[]},I={...n,isExecuting:!1,capturedVariables:new Map},N=f;else{let{evaluationContext:le}=Ja({...n,isExecuting:!1,isValidatingFunctionDefinition:!1},i,k,t);if(I=le,n.isInsideIoAsyncCall&&o&&(I={...I,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"async-block",evaluationEnv:t}}),N=gn({expr:f,env:t,context:I,variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),!N.$)throw m({token:f.token,errorMessage:"Failed to evaluate the function body."});t=N.$.env}let M=I.capturedVariables;if(vi(N)&&(k.isControlFunction=!0),N.$&&(i.implicitParameters.some(le=>Qe(le.type))||n.isInsideIoAsyncCall)){let le=s_(N);le.hasAwaits&&(N.$.awaitAnalysis=le)}let V=(ke=N.$)==null?void 0:ke.type;if(z(i.return.type)&&!i.return.type.resolvedConcreteType&&V&&!z(V)){let le=un({type:V,expectedType:void 0,expr:N,env:t});i.return.type.resolvedConcreteType=le}if(!k.isControlFunction&&V&&!ie({type:i.return.type,env:t},{type:V,env:t}))throw m({token:f.token,errorMessage:`Incompatible return type:
11017
+ Got: "${Mt}"`})}let Ie=Ee.token.value,je=ne.label,{env:it}=Be({env:t,variable:{name:Ie,type:ne.type,isCompileTimeOnly:ne.isCompileTimeOnly,value:ne.isCompileTimeOnly?[oe(ne.type,{variableName:ne.label,env:t,context:n})]:void 0,token:Ee.token,initializedAtToken:Ee.token,consumedAtToken:void 0,isOwningTheRcValue:ne.isOwningTheRcValue,parameterAlias:Ie!==je?je:void 0}});t=it,Ee.$={env:t,type:ne.type,value:ne.isCompileTimeOnly?oe(ne.type,{variableName:ne.label,env:t,context:n}):void 0,pathCollection:[]}}let C=t.frames[t.frames.length-1],w={...i,forallParameters:i.forallParameters,implicitParameters:E?v:v.map((le,Ee)=>{let ne=d[Ee];if(ne&&H(ne)){let Ie=ne.token.value;if(Ie!==le.label)return{...le,label:Ie}}return le}),parameters:i.parameters.map((le,Ee)=>{if(le.isCompileTimeOnly)return le;{let ne=g[Ee];return{...le,label:H(ne)?ne.token.value:le.label,exprs:{...le.exprs,expr:ne,labelExpr:ne,typeExpr:le.exprs.typeExpr,defaultValueExpr:void 0}}}}),return:{...i.return,typeExpr:i.return.typeExpr},parametersFrame:C,env:Eu(i.env)};if((Z=w.whereClauseExprs)!=null&&Z.length){let le=w.whereClauseExprs.map(ne=>mt(ne));t=wo({constraintExprs:le,env:t,context:{...n,isEvaluatingFunctionType:!0}}).env}let k={tag:"Function",type:w,body:f,frameLevel:t.frames.length-1,funcId:`fn_${Nt(t.modulePath)}`,definitionSiteEnclosingFunctionType:((me=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:me.kind)==="function-body"?n.isEvaluatingFunctionBodyOrAsyncBlock.type:void 0,calledComptimeFunctionCaches:[],specializedFunctionCaches:[]},b=!!a,A=_.length>0||i.parameters.some(le=>lt(le.type))||i.SelfType&&lt(i.SelfType),I,N;if(A)Ef({functionBodyExpr:f,functionType:i,functionValue:k,env:t,context:n}),f.$={env:t,type:i.return.type,value:i.return.isCompileTimeOnly?oe(i.return.type,{variableName:"function_body",env:t,context:n}):void 0,pathCollection:[]},I={...n,isExecuting:!1,capturedVariables:new Map},N=f;else{let{evaluationContext:le}=Ja({...n,isExecuting:!1,isValidatingFunctionDefinition:!1},i,k,t);if(I=le,n.isInsideIoAsyncCall&&o&&(I={...I,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"async-block",evaluationEnv:t}}),N=gn({expr:f,env:t,context:I,variablesToAdd:[],isEvaluatingFunctionBodyBeginBlock:!0}),!N.$)throw m({token:f.token,errorMessage:"Failed to evaluate the function body."});t=N.$.env}let M=I.capturedVariables;if(Ti(N)&&(k.isControlFunction=!0),N.$&&(i.implicitParameters.some(le=>Qe(le.type))||n.isInsideIoAsyncCall)){let le=s_(N);le.hasAwaits&&(N.$.awaitAnalysis=le)}let V=(ke=N.$)==null?void 0:ke.type;if(z(i.return.type)&&!i.return.type.resolvedConcreteType&&V&&!z(V)){let le=un({type:V,expectedType:void 0,expr:N,env:t});i.return.type.resolvedConcreteType=le}if(!k.isControlFunction&&V&&!ie({type:i.return.type,env:t},{type:V,env:t}))throw m({token:f.token,errorMessage:`Incompatible return type:
11018
11018
  - Expected: ${x(i.return.type)}
11019
11019
  - Got : ${x(V)}`});(Fe=N.$)!=null&&Fe.env&&(t=(yt=N.$)==null?void 0:yt.env),t=nn(t,!0),t=y;let O;if(b&&M&&M.size>0&&(O=Mu({capturedVariables:M,env:t})),b&&$.length>0){O||(O=new Map);for(let le of $)O.set(le.name,{frameLevel:0,usageType:"read",token:le.token,value:void 0,type:le.type,isEffectParam:!0})}let W,P,G,U,X=k;if((n.isAnalyzingCtfeCapability||n.forceCompileTimeBindings)&&!o){let le=ja(k,t,n);le&&(X=le)}if(o&&a&&s){U=Du({expectedCaptureType:void 0,capturedVariablesWithValues:O,env:t,closureToken:e.token,context:{...n}}).captureType;let Ee=Up(w,t),{capturedVariableDupExpressions:ne,env:Ie}=Ou({capturedVariablesWithValues:O,env:t,context:n});G=ne,t=Ie,k.funcId=`closure_${Nt(t.modulePath)}`,k.closureInfo={closureType:Ee,captureType:U,effectParamNames:$.length>0?$.map(je=>je.name):void 0},z(s)&&U&&Vu({wrapperType:s,captureType:U,env:t,errorToken:e.token}),s.resolvedConcreteType=U,W={...s,resolvedConcreteType:U},P=void 0}else W=X.type,P=X;return e.$={env:t,type:W,value:P,pathCollection:b&&M?Za(M):[],deferredDupExpressions:o&&G?G:void 0,captureType:o?U:void 0,closureFunctionValue:o?X:void 0,isAnonymousFunctionDefinition:!0},b&&Ft(e,!0),e}var pv=j(()=>{ft();xe();ce();Zo();pn();Qt();dt();Ae();Je();yn();ge();_r();Jr();Pu();Lu();fi();Ke();Gt();io();Ru()});function _v({expr:e,env:t,context:n}){let r=e.args;if(r.length===0)throw m({token:e.token,errorMessage:`Expected at least one element in array, got ${r.length}`});let i=r.length,o,a;n.expectedType&&at(n.expectedType.type)&&(a=n.expectedType.type.childType);let s=[],l=[];for(let f=0;f<r.length;f++){let p=r[f],_=R({expr:p,env:t,context:{...n,expectedType:a?{type:a,env:t}:void 0}});if(Yn(_,n),!_.$)throw m({token:p.token,errorMessage:`Failed to evaluate array element: ${L(p)}`});if(t=_.$.env,s.push(_.$.value),!o)o=a||_.$.type;else if(!ie({type:o,env:t},{type:_.$.type,env:t}))if(ie({type:un({type:o,expectedType:void 0,expr:void 0,env:t}),env:t},{type:_.$.type,env:t}))o=_.$.type;else throw m({token:p.token,errorMessage:`Array element type mismatch:
11020
11020
  Expected type: ${x(o)}
11021
- Given type: ${x(_.$.type)}`});l.push(_)}let u=xi(o,Xn("Usize",i)),c=s.every(f=>!!f)?mo(u,s):void 0;return e.$={env:t,type:u,value:c,pathCollection:[],runtimeArgExprsInOrder:l},Ft(e,!0),e}var dv=j(()=>{xe();ce();Qt();dt();Ae();Je();ge();_r();Ke()});function mv(e,t){if(e.token.type==="bool"){let n=e.token.value==="true",r=on(n);return e.$={env:t,value:r,type:r.type,pathCollection:[]},e}else throw m({token:e.token,errorMessage:`Expected bool literal, got ${e.tag}`})}var yv=j(()=>{xe();pn();ge()});function gv(e,t){if(e.token.type==="char"){let n=wb(e.token.value),r=Fi(BigInt(n));return e.$={env:t,value:r,type:r.type,pathCollection:[]},e}else throw m({token:e.token,errorMessage:`Expected char literal, got ${e.tag}`})}function wb(e){let t=e.slice(1,-1);if(t.length===1)return t.charCodeAt(0);if(t.length===2&&t[0]==="\\"){let n=t[1];switch(n){case"n":return 10;case"t":return 9;case"r":return 13;case"\\":return 92;case"'":return 39;case'"':return 34;case"0":return 0;case"a":return 7;case"b":return 8;case"f":return 12;case"v":return 11;default:throw new Error(`Unknown escape sequence: \\${n}`)}}else throw new Error(`Invalid char literal: ${e}`)}var hv=j(()=>{xe();pn();ge()});function vv({expr:e,env:t,context:n}){let r=[],i=e.args;if(i.length===0)throw m({token:e.token,errorMessage:`Expected at least one element in comptime_list, got ${i.length}`});let o;n.expectedType&&Rn(n.expectedType.type)&&(o=n.expectedType.type.childType);for(let s=0;s<i.length;s++){let l=i[s],u=R({expr:l,env:t,context:{...n}});if(!u.$||!u.$.value)throw m({token:l.token,errorMessage:`Failed to evaluate expr_list element. Expected compile-time known value:
11021
+ Given type: ${x(_.$.type)}`});l.push(_)}let u=Vi(o,Xn("Usize",i)),c=s.every(f=>!!f)?mo(u,s):void 0;return e.$={env:t,type:u,value:c,pathCollection:[],runtimeArgExprsInOrder:l},Ft(e,!0),e}var dv=j(()=>{xe();ce();Qt();dt();Ae();Je();ge();_r();Ke()});function mv(e,t){if(e.token.type==="bool"){let n=e.token.value==="true",r=on(n);return e.$={env:t,value:r,type:r.type,pathCollection:[]},e}else throw m({token:e.token,errorMessage:`Expected bool literal, got ${e.tag}`})}var yv=j(()=>{xe();pn();ge()});function gv(e,t){if(e.token.type==="char"){let n=wb(e.token.value),r=Li(BigInt(n));return e.$={env:t,value:r,type:r.type,pathCollection:[]},e}else throw m({token:e.token,errorMessage:`Expected char literal, got ${e.tag}`})}function wb(e){let t=e.slice(1,-1);if(t.length===1)return t.charCodeAt(0);if(t.length===2&&t[0]==="\\"){let n=t[1];switch(n){case"n":return 10;case"t":return 9;case"r":return 13;case"\\":return 92;case"'":return 39;case'"':return 34;case"0":return 0;case"a":return 7;case"b":return 8;case"f":return 12;case"v":return 11;default:throw new Error(`Unknown escape sequence: \\${n}`)}}else throw new Error(`Invalid char literal: ${e}`)}var hv=j(()=>{xe();pn();ge()});function vv({expr:e,env:t,context:n}){let r=[],i=e.args;if(i.length===0)throw m({token:e.token,errorMessage:`Expected at least one element in comptime_list, got ${i.length}`});let o;n.expectedType&&Rn(n.expectedType.type)&&(o=n.expectedType.type.childType);for(let s=0;s<i.length;s++){let l=i[s],u=R({expr:l,env:t,context:{...n}});if(!u.$||!u.$.value)throw m({token:l.token,errorMessage:`Failed to evaluate expr_list element. Expected compile-time known value:
11022
11022
  ${L(l)}`});t=u.$.env;let c=u.$.value;if(r.push(c),!o)o=u.$.type;else if(!ie({type:o,env:t},{type:u.$.type,env:t}))throw m({token:l.token,errorMessage:`Mismatched element types in comptime_list. Expected element of type ${x(o)}, got ${x(u.$.type)}`})}let a=ai(o,r);return e.$={env:t,type:a.type,value:a,pathCollection:[]},e}var Tv=j(()=>{xe();ce();Qt();Ae();Je();ge();Ke()});function Ev(e,t,n){let i=ue(t,"Box").find(_=>_.value&&$e(_.value[0])&&te(_.type));if(!i||!i.value||!$e(i.value[0]))throw new Error("Cannot find Box type constructor in environment");let o=i.value[0],a=o.type,s=a.parameters[0],l=_e(e),u=Ct(a.env),{env:c}=Be({env:u,variable:{name:s.label,token:Ne,type:l.type,isCompileTimeOnly:!0,initializedAtToken:Ne,consumedAtToken:void 0,value:[l],isOwningTheRcValue:!1}}),{value:f,callerEnv:p}=Xa({functionCalleeExpr:void 0,functionType:a,functionValue:o,argValues:{forallArgs:[],args:[{value:l,parameterType:s.type,argType:Ht()}],variadicArgs:[]},callerEnv:t,calleeEnv:c,context:n});if(!Y(f)||!rn(f.value))throw new Error("Box type constructor did not return a type value");return{boxType:f.value,env:p}}function Fb(e,t,n){var r;try{let i=R({expr:e,env:t,context:n});if(!i.$)return!1;let o=i.$.value;if($e(o))return!!ue(t,"box").find(l=>l.value&&$e(l.value[0])&&l.value[0]===o);if(Y(o)){let s=o.value;return!!((r=s==null?void 0:s.typeName)!=null&&r.startsWith("Box("))}else return!1}catch{return!1}}function $v({expr:e,env:t,context:n}){He(e,D.dyn,1);let r=e.args[0],i=n.expectedType,o;if(n.expectedType&&ot(n.expectedType.type)){let y=n.expectedType.type;if(o=Or(Ht(),"",{requiredTraits:y.requiredTraits.map(h=>h.traitType),negativeTraits:y.negativeTraits.map(h=>h.traitType),env:t,context:n}),S(r)&&Fb(r.func,t,{...n})&&T(r.args[0],"=>")){let{boxType:h,env:v}=Ev(o,t,n);t=v,i={type:h,env:t}}else i={type:o,env:n.expectedType.env}}else i=void 0;let a=R({expr:r,env:t,context:{...n,expectedType:i}});if(!a.$)throw m({token:r.token,errorMessage:`Failed to evaluate the value expression for 'dyn':
11023
11023
  ${L(r)}`});let s=a.$.type,l=s,u=a;if(!rn(l)&&!(z(l)&&rt(l))){let{boxType:y,env:h}=Ev(l,t,{...n});t=h;let v={tag:"Atom",token:{...r.token,value:"box",type:"identifier"},$:void 0},E={tag:"FnCall",func:v,args:[a],token:r.token,$:void 0},$=R({expr:E,env:t,context:{...n,expectedType:{type:y,env:t}}});if(!$.$)throw m({token:r.token,errorMessage:`Failed to auto-box value for 'dyn':
11024
11024
  ${L(r)}`});t=$.$.env,l=$.$.type,u=$,e.args[0]=$}else t=a.$.env;Yn(u,n),t=u.$.env;let c=[],f=[],p=new Set,_;if(n.expectedType&&ot(n.expectedType.type))_=n.expectedType.type;else if(Ar(l)){let y=l.fields[0].type;if(y.trait){let h=[];for(let v of y.trait.fields)v.assignedValue&&mn(v.assignedValue)&&h.push(v.assignedValue.type);_=Ns({requiredTraits:h,negativeTraits:[],env:t}),t=Ls({dynType:_,env:t,context:n})}else throw m({token:e.token,errorMessage:`'${D.dyn}' with Box(T) requires T to have a trait. Got boxed type: ${x(y)}`})}else if(l.trait){let y=[];for(let h of l.trait.fields)h.assignedValue&&mn(h.assignedValue)&&y.push(h.assignedValue.type);_=Ns({requiredTraits:y,negativeTraits:[],env:t}),t=Ls({dynType:_,env:t,context:n})}else throw m({token:e.token,errorMessage:`'${D.dyn}' requires either an expected Dyn type context, a SomeType (Impl) value, or a type with a trait. Got value type: ${x(l)}`});let d=[];if(Ar(l)){let y=l.fields[0].type;(z(y)||ot(y))&&d.push(...y.negativeTraits.map(h=>h.traitType)??[])}for(let{traitType:y}of _.requiredTraits)for(let h of d)if(ie({type:y,env:t},{type:h,env:t}))throw m({token:e.token,errorMessage:`Required trait ${x(y)} is in the negative traits list and cannot be used.`});for(let{traitType:y}of _.requiredTraits)if(!p.has(y))if(Ar(l)&&(z(l.fields[0].type)||ot(l.fields[0].type))){let h=l.fields[0].type,v=!1,E=z(h)&&h.resolvedConcreteType?h.resolvedConcreteType:s!==l?s:void 0;if(E!=null&&E.trait){for(let $ of E.trait.fields)if($.assignedValue&&mn($.assignedValue)&&ie({type:y,env:t},{type:$.assignedValue.type,env:t})){f.push($.assignedValue),c.push($.assignedValue.type),p.add(y),v=!0;break}}if(!v){let $=h.requiredTraits.map(C=>C.traitType);for(let C of $)if(ie({type:y,env:t},{type:C,env:t})){let w=[];for(let b=0;b<y.fields.length;b++){let A=y.fields[b],I=C.fields.findIndex(N=>N.label===A.label);I===-1?w.push(void 0):w.push(C.fields[I].assignedValue)}let k=ga(y,w);f.push(k),c.push(k.type),p.add(y),v=!0;break}if(!v)throw m({token:e.token,errorMessage:`Required trait ${x(y)} not found in SomeType's requiredTraits.`})}}else{let h=Ar(l)?l.fields[0].type:l;if(h.trait){let v=!1;for(let E of h.trait.fields)if(E.assignedValue&&mn(E.assignedValue)&&ie({type:y,env:t},{type:E.assignedValue.type,env:t})){f.push(E.assignedValue),c.push(E.assignedValue.type),p.add(y),v=!0;break}if(!v)throw m({token:e.token,errorMessage:`Required trait ${x(y)} is not implemented by type ${x(l)}.`})}else throw m({token:e.token,errorMessage:`Cannot find trait ${x(y)} for value type ${x(l)}.`})}let g=[];for(let{traitType:y}of _.requiredTraits){let h=c.findIndex(v=>ie({type:y,env:t},{type:v,env:t}));if(h===-1)throw m({token:e.token,errorMessage:`No trait value found for expected trait type ${x(y)}.`});g.push(f[h])}return e.$={env:t,value:void 0,type:_,pathCollection:a.$.pathCollection,dynCallTraitValues:g},Ft(e,!0),e}var bv=j(()=>{ft();xe();ce();pn();Qt();dt();Ae();Je();ge();Su();Ke();Gt();Kr()});function Cv(e,t,n){if(e.token.type==="float"){let r=parseFloat(e.token.value),i="ComptimeFloat";if(n.expectedType){let a=n.expectedType.type;bs(a)?i="F32":Cs(a)&&(i="F64")}let o=Xn(i,r);return e.$={env:t,value:o,type:o.type,pathCollection:[]},e}else throw m({token:e.token,errorMessage:`Expected float literal, got ${e.tag}`})}var kv=j(()=>{xe();pn();Ae();ge();_r()});function wv(e,t,n){if(e.token.type==="integer"){let r=e.token.value.replace(/_/g,""),i=10;r.match(/^0x/i)?(i=16,r=r.slice(2)):r.match(/^0b/i)?(i=2,r=r.slice(2)):r.match(/^0o/i)&&(i=8,r=r.slice(2));let o="ComptimeInt";if(n.expectedType){let u=n.expectedType.type;ds(u)?o="Usize":ms(u)?o="Isize":mi(u)?o="U8":ys(u)?o="I8":gs(u)?o="U16":hs(u)?o="I16":vs(u)?o="U32":Ts(u)?o="I32":Es(u)?o="U64":$s(u)&&(o="I64")}let a=o==="U64"||o==="I64"||o==="Usize"||o==="Isize",s;a||o==="ComptimeInt"?i===16?s=BigInt("0x"+r):i===8?s=BigInt("0o"+r):i===2?s=BigInt("0b"+r):s=BigInt(r):s=parseInt(r,i);let l=Xn(o,s);return e.$={env:t,value:l,type:l.type,pathCollection:[]},e}else throw m({token:e.token,errorMessage:`Expected integer literal, got ${e.tag}`})}var Fv=j(()=>{xe();pn();Ae();ge();_r()});function Lv(e,t){if(e.token.type==="string"){let n=lr(JSON.parse(e.token.value));return e.$={env:t,value:n,type:n.type,pathCollection:[]},e}else throw m({token:e.token,errorMessage:`Expected string literal, got ${e.tag}`})}var Av=j(()=>{xe();pn();ge()});function Lb({expr:e,tupleFieldIndex:t,env:n,context:r,elementIndex:i,runtimeArgExprsInOrder:o}){var _;let a=e,s=e,l;if(S(a)&&T(a,":",2)){let d=a.args[0];throw m({token:d.token,errorMessage:"Labelled field is not allowed in tuple value."})}let u=(_=r.expectedType)==null?void 0:_.type,c;if(u){if(!st(u))throw m({token:e.token,errorMessage:`(2) Failed to evaluate the tuple fields. Expected type to be:
11025
11025
  ${x(u)}`});let d=u.fields[t];if(!d)throw m({token:e.token,errorMessage:`Failed to get the tuple field at index ${t}`});c=d.type}let f=R({expr:s,env:n,context:{...r,expectedType:c?{type:c,env:n}:void 0}});if(Yn(f,r),!f.$)throw m({token:s.token,errorMessage:`Failed to evaluate the tuple field: ${L(s)}`});n=f.$.env;let p=f.$.value;if(p&&Y(f.$.value))throw m({token:s.token,errorMessage:`Cannot store a type value in tuple, please use module instead:
11026
11026
  ${L(s)}`});return!c||!Uo(c,n)?l=un({type:f.$.type,expectedType:void 0,expr:void 0,env:n}):l=f.$.type,o.push(f),e!==s&&(e.$={env:n,type:l,value:p,pathCollection:[]}),{type:{exprs:{expr:e,labelExpr:void 0,typeExpr:void 0,defaultValueExpr:void 0,assignedValueExpr:void 0},type:l,label:i.toString()},value:p,env:n}}function Ab({args:e,env:t,context:n}){let r=[],i=[],o=[];for(let l=0;l<e.length;l++){let u=e[l],{type:c,value:f,env:p}=Lb({expr:u,env:t,tupleFieldIndex:l,context:{...n},elementIndex:l,runtimeArgExprsInOrder:o});r.push(c),i.push(f),t=p}let a=fu(r),s=i.some(l=>!l)?void 0:$l(a,i);return{type:a,value:s,env:t,runtimeArgExprsInOrder:o}}function Iv({expr:e,env:t,context:n}){if(!T(e,D.tuple))throw m({token:e.token,errorMessage:`Expected tuple, got ${e.tag}`});if(e.args.length===0)return e.$={env:t,value:se,type:se.type,pathCollection:[]},e;let{type:r,value:i,env:o,runtimeArgExprsInOrder:a}=Ab({args:e.args,env:t,context:n});return t=o,r.fields.forEach(s=>{if(s.exprs.defaultValueExpr)throw m({token:s.exprs.defaultValueExpr.token,errorMessage:"Tuple value field cannot have default value."});if(s.exprs.labelExpr)throw m({token:s.exprs.labelExpr.token,errorMessage:"Tuple value field cannot have labels."})}),e.$={env:t,value:i,type:r,pathCollection:[],runtimeArgExprsInOrder:a},Ft(e,!0),e}var Sv=j(()=>{xe();ce();dt();Ae();Je();xn();ge();Ke()});function Ju({expr:e,env:t,context:n}){var p,_;if(!T(e,":",2))throw m({token:e.token,errorMessage:'Expected ":" for variable binding.'});let r=e.args[0],i=e.args[1],o=R({expr:i,env:t,context:{...n}});if(!o.$)throw m({token:i.token,errorMessage:`Failed to evaluate rhs expression:
11027
11027
  ${L(i)}`});t=o.$.env;let a=o.$.value;if(!Y(a))throw m({token:i.token,errorMessage:`Expected type for rhs, got ${L(i)}`});let s=a.value;if(at(s)&&Ge(s.length))throw m({token:i.token,errorMessage:`Array type with inferred length '_' is not allowed in type annotations.
11028
- Use explicit length like 'Array(i32, 3)' or omit the type annotation and initialize with 'arr := Array(i32, _)(1, 2, 3)'`});Hi(s,o.token);let l=!1,u=!1;if(S(r)&&T(r,D.comptime)){if(l=!0,r.args.length!==1)throw m({token:r.token,errorMessage:`Expected one argument for "comptime" , got ${r.args.length}`});r=r.args[0]}if(S(r)&&T(r,D.given)){if(r.args.length!==1)throw m({token:r.token,errorMessage:`Expected exactly one argument for "given", got ${r.args.length}`});u=!0,l=!0,r=r.args[0]}if(l=l||n.forceCompileTimeBindings===!0,!l&&((p=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:p.kind)==="function-body"&&((_=n.isEvaluatingFunctionBodyOrAsyncBlock)!=null&&_.type.return.isCompileTimeOnly))throw m({token:r.token,errorMessage:"Unexpected runtime variable binding in a compile-time only function body."});if(!Dt(r))throw m({token:r.token,errorMessage:`Invalid binding to "${r.token.value}", expected identifier or operator`});if(Ai(s,t)&&!l)throw m({token:r.token,errorMessage:`Expected "comptime" for compile-time known value binding:
11029
- ${x(s)}`});if(Ii(s,t)&&l)throw m({token:r.token,errorMessage:`Unexpected "comptime" for ${x(s)} which can only be used at runtime.`});let c=r.token.value;if(!l&&te(s)&&ii(s))throw m({token:r.token,errorMessage:`Runtime variables with generic function types are not allowed:
11028
+ Use explicit length like 'Array(i32, 3)' or omit the type annotation and initialize with 'arr := Array(i32, _)(1, 2, 3)'`});Hi(s,o.token);let l=!1,u=!1;if(S(r)&&T(r,D.comptime)){if(l=!0,r.args.length!==1)throw m({token:r.token,errorMessage:`Expected one argument for "comptime" , got ${r.args.length}`});r=r.args[0]}if(S(r)&&T(r,D.given)){if(r.args.length!==1)throw m({token:r.token,errorMessage:`Expected exactly one argument for "given", got ${r.args.length}`});u=!0,l=!0,r=r.args[0]}if(l=l||n.forceCompileTimeBindings===!0,!l&&((p=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:p.kind)==="function-body"&&((_=n.isEvaluatingFunctionBodyOrAsyncBlock)!=null&&_.type.return.isCompileTimeOnly))throw m({token:r.token,errorMessage:"Unexpected runtime variable binding in a compile-time only function body."});if(!Dt(r))throw m({token:r.token,errorMessage:`Invalid binding to "${r.token.value}", expected identifier or operator`});if(Ii(s,t)&&!l)throw m({token:r.token,errorMessage:`Expected "comptime" for compile-time known value binding:
11029
+ ${x(s)}`});if(Si(s,t)&&l)throw m({token:r.token,errorMessage:`Unexpected "comptime" for ${x(s)} which can only be used at runtime.`});let c=r.token.value;if(!l&&te(s)&&ii(s))throw m({token:r.token,errorMessage:`Runtime variables with generic function types are not allowed:
11030
11030
  ${x(s)}
11031
11031
 
11032
11032
  Generic functions must be compile-time known to enable monomorphization. Consider using:
11033
- comptime(${c}) : ${x(s)}`});let{env:f}=Be({env:t,variable:{name:c,type:s,isCompileTimeOnly:l,value:l?[oe(s,{variableName:c,env:t,context:n})]:void 0,token:r.token,initializedAtToken:void 0,consumedAtToken:void 0,isReassignable:!0,isOwningTheRcValue:ut(s),isImplicit:u}});return t=f,r.$={env:t,type:s,pathCollection:[[c]]},e.$={env:t,type:se.type,value:se,pathCollection:[]},{expr:e,variableExpr:r,variableName:c}}var Sf=j(()=>{ft();xe();ce();Ae();Je();xn();ge();Ke();Sr()});function ec({expr:e,env:t,context:n,throwErrorOnUndefined:r}){var o,a,s,l;let i=e.token.value;if(i==="Type"){let u=_e(Ht());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Module"){let u=_e(Er(1));return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Trait"){let u=_e(Er(1));return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="unit"){let u=_e(Qr());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="comptime_int"){let u=_e(yo());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="comptime_float"){let u=_e(ha());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="comptime_string"){let u=_e(Pn());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="bool"){let u=_e(Bt());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="usize"){let u=_e(_n());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="isize"){let u=_e(va());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u8"){let u=_e(Ta());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i8"){let u=_e(Ea());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u16"){let u=_e($a());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i16"){let u=_e(ba());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u32"){let u=_e(Ca());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i32"){let u=_e(go());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u64"){let u=_e(ka());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i64"){let u=_e(wa());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="f32"){let u=_e(Fa());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="f64"){let u=_e(ho());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="char"){let u=_e(kp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="short"){let u=_e(wp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="ushort"){let u=_e(Fp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="int"){let u=_e(Lp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="uint"){let u=_e(Ap());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="long"){let u=_e(Ip());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="ulong"){let u=_e(Sp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="longlong"){let u=_e(Np());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="ulonglong"){let u=_e(xp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="longdouble"){let u=_e(Vp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="void"){let u=_e(Dp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Expr"){let u=_e(gr());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Self"&&n.SelfType){let u=_e(n.SelfType);return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="SelfTrait"&&n.SelfTraitType){let u=_e(n.SelfTraitType);return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="SelfModule"&&n.SelfModuleType){let u=_e(n.SelfModuleType);return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else{let u=ue(t,i);if(u.length){let c=u[u.length-1];if(!c.initializedAtToken&&r&&!te(c.type)&&!Y((o=c.value)==null?void 0:o[0]))throw m({token:e.token,errorMessage:`Variable "${i}" is not initialized`});let f=c.type.isExtern==="c"&&Ge((a=c.value)==null?void 0:a[0])&&!(te(c.type)||Vt(c.type))||(s=c.value)==null?void 0:s[0];if(e.$={env:t,type:c.type,value:f,originType:c.type,variableName:c.name,pathCollection:[[c.name]],sourceVariable:c},n.isEvaluatingFunctionBodyOrAsyncBlock&&n.isEvaluatingFunctionBodyOrAsyncBlock.kind==="function-body"&&n.capturedVariables&&n.isEvaluatingFunctionBodyOrAsyncBlock.evaluationEnv){let p=n.isEvaluatingFunctionBodyOrAsyncBlock.evaluationEnv.frames.length;c.frameLevel<p&&Qa(c.name,c.frameLevel,"own",e.token,n)}if(((l=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:l.kind)==="async-block"){let p=n.isEvaluatingFunctionBodyOrAsyncBlock.evaluationEnv.frames.length;c.frameLevel<p&&Qa(c.name,c.frameLevel,"own",e.token,n)}return e}else throw m({token:e.token,errorMessage:`Variable "${i}" not found.`})}}var Nf=j(()=>{ft();xe();dt();Ae();Mr();ge();Nu()});function xf(e,t){let n=dp(t),r=`Right-hand side contains "${n}" from function.`;throw S(e)&&T(e,D.cond)?r=`Cannot assign "cond" expression to variable when all cases contain "${n}" statements. Consider using the "cond" result directly without assignment, or ensure at least one case doesn't return.`:S(e)&&T(e,D.match)?r=`Cannot assign "match" expression to variable when all cases contain "${n}" statements. Consider using the "match" result directly without assignment, or ensure at least one case doesn't return.`:S(e)&&T(e,D.begin)&&(r=`Cannot assign "begin" expression to variable when it contains "${n}" statement.`),m({token:e.token,errorMessage:r})}function Ib(e,t){var n;if(at(e)&&Ge(e.length)){let r=e.length;if(r.variableName){let i=ue(t,r.variableName);if(i.length>0){let o=i[i.length-1];if((n=o.value)!=null&&n[0]&&!Ge(o.value[0]))return xi(e.childType,o.value[0])}}}return e}function Nv({expr:e,env:t,context:n}){var o,a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k;if(!T(e,"=",2))throw m({token:e.token,errorMessage:'Expected "=" for assignment.'});let r=e.args[0],i=e.args[1];if(H(r)||S(r)&&T(r,":",2)){let b;if(H(r)){let re=ec({expr:r,env:t,context:{...n},throwErrorOnUndefined:!1});if(!re.$)throw m({token:r.token,errorMessage:`Failed to evaluate left-hand side of assignment: ${L(r)}`});t=re.$.env,r=re,b=r.token.value}else{let{expr:re,variableExpr:ee,variableName:fe}=Ju({expr:r,env:t,context:{...n}});(o=re.$)!=null&&o.env&&(t=(a=re.$)==null?void 0:a.env),r=ee,b=fe}let A=ue(t,b);if(!A.length)throw m({token:r.token,errorMessage:`Variable ${b} not found in the environment`});let I=A[A.length-1];if(!I.isReassignable)throw m({token:r.token,errorMessage:`Cannot reassign "${b}".
11033
+ comptime(${c}) : ${x(s)}`});let{env:f}=Be({env:t,variable:{name:c,type:s,isCompileTimeOnly:l,value:l?[oe(s,{variableName:c,env:t,context:n})]:void 0,token:r.token,initializedAtToken:void 0,consumedAtToken:void 0,isReassignable:!0,isOwningTheRcValue:ut(s),isImplicit:u}});return t=f,r.$={env:t,type:s,pathCollection:[[c]]},e.$={env:t,type:se.type,value:se,pathCollection:[]},{expr:e,variableExpr:r,variableName:c}}var Sf=j(()=>{ft();xe();ce();Ae();Je();xn();ge();Ke();Sr()});function ec({expr:e,env:t,context:n,throwErrorOnUndefined:r}){var o,a,s,l;let i=e.token.value;if(i==="Type"){let u=_e(Ht());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Module"){let u=_e(Er(1));return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Trait"){let u=_e(Er(1));return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="unit"){let u=_e(Qr());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="comptime_int"){let u=_e(yo());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="comptime_float"){let u=_e(ha());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="comptime_string"){let u=_e(Pn());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="bool"){let u=_e(Bt());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="usize"){let u=_e(_n());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="isize"){let u=_e(va());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u8"){let u=_e(Ta());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i8"){let u=_e(Ea());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u16"){let u=_e($a());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i16"){let u=_e(ba());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u32"){let u=_e(Ca());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i32"){let u=_e(go());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="u64"){let u=_e(ka());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="i64"){let u=_e(wa());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="f32"){let u=_e(Fa());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="f64"){let u=_e(ho());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="char"){let u=_e(kp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="short"){let u=_e(wp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="ushort"){let u=_e(Fp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="int"){let u=_e(Lp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="uint"){let u=_e(Ap());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="long"){let u=_e(Ip());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="ulong"){let u=_e(Sp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="longlong"){let u=_e(Np());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="ulonglong"){let u=_e(xp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="longdouble"){let u=_e(Vp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="void"){let u=_e(Dp());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Expr"){let u=_e(gr());return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="Self"&&n.SelfType){let u=_e(n.SelfType);return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="SelfTrait"&&n.SelfTraitType){let u=_e(n.SelfTraitType);return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else if(i==="SelfModule"&&n.SelfModuleType){let u=_e(n.SelfModuleType);return e.$={env:t,type:u.type,value:u,pathCollection:[]},e}else{let u=ue(t,i);if(u.length){let c=u[u.length-1];if(!c.initializedAtToken&&r&&!te(c.type)&&!Y((o=c.value)==null?void 0:o[0]))throw m({token:e.token,errorMessage:`Variable "${i}" is not initialized`});let f=c.type.isExtern==="c"&&Ge((a=c.value)==null?void 0:a[0])&&!(te(c.type)||Vt(c.type))||(s=c.value)==null?void 0:s[0];if(e.$={env:t,type:c.type,value:f,originType:c.type,variableName:c.name,pathCollection:[[c.name]],sourceVariable:c},n.isEvaluatingFunctionBodyOrAsyncBlock&&n.isEvaluatingFunctionBodyOrAsyncBlock.kind==="function-body"&&n.capturedVariables&&n.isEvaluatingFunctionBodyOrAsyncBlock.evaluationEnv){let p=n.isEvaluatingFunctionBodyOrAsyncBlock.evaluationEnv.frames.length;c.frameLevel<p&&Qa(c.name,c.frameLevel,"own",e.token,n)}if(((l=n.isEvaluatingFunctionBodyOrAsyncBlock)==null?void 0:l.kind)==="async-block"){let p=n.isEvaluatingFunctionBodyOrAsyncBlock.evaluationEnv.frames.length;c.frameLevel<p&&Qa(c.name,c.frameLevel,"own",e.token,n)}return e}else throw m({token:e.token,errorMessage:`Variable "${i}" not found.`})}}var Nf=j(()=>{ft();xe();dt();Ae();Mr();ge();Nu()});function xf(e,t){let n=dp(t),r=`Right-hand side contains "${n}" from function.`;throw S(e)&&T(e,D.cond)?r=`Cannot assign "cond" expression to variable when all cases contain "${n}" statements. Consider using the "cond" result directly without assignment, or ensure at least one case doesn't return.`:S(e)&&T(e,D.match)?r=`Cannot assign "match" expression to variable when all cases contain "${n}" statements. Consider using the "match" result directly without assignment, or ensure at least one case doesn't return.`:S(e)&&T(e,D.begin)&&(r=`Cannot assign "begin" expression to variable when it contains "${n}" statement.`),m({token:e.token,errorMessage:r})}function Ib(e,t){var n;if(at(e)&&Ge(e.length)){let r=e.length;if(r.variableName){let i=ue(t,r.variableName);if(i.length>0){let o=i[i.length-1];if((n=o.value)!=null&&n[0]&&!Ge(o.value[0]))return Vi(e.childType,o.value[0])}}}return e}function Nv({expr:e,env:t,context:n}){var o,a,s,l,u,c,f,p,_,d,g,y,h,v,E,$,C,w,k;if(!T(e,"=",2))throw m({token:e.token,errorMessage:'Expected "=" for assignment.'});let r=e.args[0],i=e.args[1];if(H(r)||S(r)&&T(r,":",2)){let b;if(H(r)){let re=ec({expr:r,env:t,context:{...n},throwErrorOnUndefined:!1});if(!re.$)throw m({token:r.token,errorMessage:`Failed to evaluate left-hand side of assignment: ${L(r)}`});t=re.$.env,r=re,b=r.token.value}else{let{expr:re,variableExpr:ee,variableName:fe}=Ju({expr:r,env:t,context:{...n}});(o=re.$)!=null&&o.env&&(t=(a=re.$)==null?void 0:a.env),r=ee,b=fe}let A=ue(t,b);if(!A.length)throw m({token:r.token,errorMessage:`Variable ${b} not found in the environment`});let I=A[A.length-1];if(!I.isReassignable)throw m({token:r.token,errorMessage:`Cannot reassign "${b}".
11034
11034
  You can mutate fields (e.g., ${b}.field = value) but cannot reassign itself.`});if(i=R({expr:i,env:t,context:{...n,expectedType:{type:I.type,env:t},isInsideGivenHandler:I.isImplicit?!0:n.isInsideGivenHandler}}),!i.$)throw m({token:i.token,errorMessage:`Failed to evaluate right-hand side of assignment: ${L(i)}`});t=i.$.env,Bo(i,t),Eo(i),Yn(i,n),t=i.$.env,cn((s=i.$)==null?void 0:s.controlFlow)&&xf(i,i.$.controlFlow);let N=(l=i.$)==null?void 0:l.type;if(!N)try{let{expr:re,type:ee,env:fe}=oo({expr:i,type:I.type,env:t,context:{...n}});i=re,N=ee,t=fe}catch(re){throw m({token:i.token,errorMessage:`(evaluateAssignment) Failed to synthesize type for expression: ${L(i)}
11035
11035
  ${re}`})}if(I.isCompileTimeOnly||(N=un({type:N,expectedType:I.type,expr:i,env:t})),!ie({type:I.type,env:t},{type:N,env:t}))if(Aa(I.type))try{let{expr:re,type:ee,env:fe}=oo({expr:i,type:I.type,env:t,context:{...n}});if(ie({type:I.type,env:fe},{type:ee,env:fe})){i=re,N=ee,t=fe;let de=Ib(I.type,t);t=It(t,I,{...I,type:de})}else throw m({token:r.token,errorMessage:`Incompatible types:
11036
11036
  - Expected: ${x(I.type)}
@@ -11074,11 +11074,11 @@ ${f instanceof fr||f instanceof Hr?f.toString():f instanceof Error?f.message:Str
11074
11074
  (${L(l)}) = ${L(a)}`});if(a=R({expr:a,env:t,context:{...n,expectedType:void 0,isInsideGivenHandler:s?!0:n.isInsideGivenHandler}}),(c=a.$)!=null&&c.env&&(t=(f=a.$)==null?void 0:f.env),(p=a.$)!=null&&p.type&&Hi(a.$.type,a.token),cn((_=a.$)==null?void 0:_.controlFlow)&&xf(a,a.$.controlFlow),Eo(a),H(l)){if(Bo(a,t),Yn(a,{...n}),(d=a.$)!=null&&d.env&&(t=(g=a.$)==null?void 0:g.env),!Dt(l))throw m({token:l.token,errorMessage:`Invalid assignment to ${l.token.value}, expected identifier or operator`});let $=s||r,C=s?!1:i,w=(y=a.$)==null?void 0:y.type;if((h=l.$)!=null&&h.type){try{let{expr:M,type:V,env:O}=oo({expr:a,type:(v=l.$)==null?void 0:v.type,env:t,context:{...n}});a=M,w=V,t=O}catch(M){throw m({token:a.token,errorMessage:`(evaluateInitializationAssignment) Failed to synthesize type for expression: ${L(a)}
11075
11075
  ${M}`})}if(!ie({type:l.$.type,env:t},{type:w,env:t}))throw m({token:l.token,errorMessage:`Incompatible types:
11076
11076
  - Defined: ${x(l.$.type)}
11077
- - Given : ${x(w)}`})}else{if(!w)throw m({token:a.token,errorMessage:`Failed to evaluate, got ${L(a)}`});let M=w;C&&(M=un({type:w,expectedType:void 0,expr:a,env:t})),l.$={...l.$,env:t,type:M,pathCollection:[]}}if(!$&&Ai(l.$.type,t))throw m({token:e.token,errorMessage:`Expected "::" instead of ":=" for compile-time known value assignment:
11077
+ - Given : ${x(w)}`})}else{if(!w)throw m({token:a.token,errorMessage:`Failed to evaluate, got ${L(a)}`});let M=w;C&&(M=un({type:w,expectedType:void 0,expr:a,env:t})),l.$={...l.$,env:t,type:M,pathCollection:[]}}if(!$&&Ii(l.$.type,t))throw m({token:e.token,errorMessage:`Expected "::" instead of ":=" for compile-time known value assignment:
11078
11078
  ${L(e)}
11079
11079
 
11080
11080
  Type:
11081
- ${x(l.$.type)}`});if($&&Ii(l.$.type,t))throw m({token:e.token,errorMessage:`Expected ":=" instead of "::" for value type "${x(l.$.type)}" which can only be used at the runtime:
11081
+ ${x(l.$.type)}`});if($&&Si(l.$.type,t))throw m({token:e.token,errorMessage:`Expected ":=" instead of "::" for value type "${x(l.$.type)}" which can only be used at the runtime:
11082
11082
  ${L(e)}`});let k=(E=a.$)==null?void 0:E.value;if(Y(k)&&!k.value.typeName&&k.value!==n.SelfType?k.value.typeName=l.token.value:$e(k)&&!k.funcName?(k.funcName=l.token.value,k.funcId+=`_${l.token.value}`):(At(k)||mn(k))&&!k.type.typeName&&k.type!==n.SelfType&&(k.type.typeName=l.token.value),s&&$e(k)&&(k.isModuleEffectMember=!0),!k&&$)throw m({token:l.token,errorMessage:`Expected compile-time value for "${l.token.value}".
11083
11083
  Got runtime value. Please consider using ":=" instead of "::":
11084
11084
  ${L(a)}`});l.$={...l.$,env:t,type:l.$.type,value:$?k?ur(k):oe(l.$.type,{variableName:l.token.value,env:t,context:n}):void 0,pathCollection:[]};let b=l.$.type;z(b)&&w&&z(w)&&w.resolvedConcreteType&&(b={...b,resolvedConcreteType:w.resolvedConcreteType},l.$.type=b);let A=xs(a,t,t.modulePath),I=A;A!=null&&A.consumedAtToken&&(I=void 0);let{env:N}=Be({env:t,variable:{name:l.token.value,type:b,isCompileTimeOnly:$,value:l.$.value?[l.$.value]:void 0,token:l.token,initializedAtToken:l.token,consumedAtToken:void 0,isOwningTheRcValue:ut(b),isOwningTheSameRcValueAs:I,isReassignable:!s,isImplicit:s}});return t=N,l.$.env=t,s&&(o.$={env:t,value:se,type:se.type,pathCollection:[]}),e.$={env:t,value:se,type:se.type,pathCollection:[],isCompileTimeOnlyAssignment:$},e}else{let $=s||r,{env:C,runtimeDestructurings:w}=Zv({lhs:l,rhs:a,env:t,isCompileTimeOnly:s||r,context:{...n}});return t=C,e.$={env:t,value:se,type:se.type,pathCollection:[],runtimeDestructurings:w,isCompileTimeOnlyAssignment:$},e}}var tT=j(()=>{ft();xe();ce();Qt();Ae();Je();xn();ge();Ku();Sr();Rs();Vf();Jv();Ke()});function Ub(e){return S(e)?T(e,"|",2):!1}function zf(e){if(!Ub(e))return[e];let t=e,n=t.args[0],r=t.args[1];return[...zf(n),...zf(r)]}function zb(e){return po(e)||_o(e)||yi(e)||Lr(e)||dn(e)||On(e)||Sn(e)}function nT({expr:e,env:t,context:n}){var $,C,w,k,b,A,I,N,M,V,O;if(!T(e,D.match))throw m({token:e.token,errorMessage:`Expected "match", got ${e.tag}`});let r=e.args;if(r.length<2)throw m({token:e.token,errorMessage:`Expected at least 2 arguments for "match", got ${r.length}`});let i=r[0],o=H(i)?R({expr:i,env:t,context:{...n,expectedType:void 0}}):gn({expr:i,env:t,context:{...n,expectedType:void 0},variablesToAdd:[]});if(!o.$||!o.$.variableName)throw m({token:i.token,errorMessage:`Failed to evaluate the match scrutinee expression: ${L(i)}`});t=o.$.env;let a=o.$.type,s=o.$.value,l,u;if(_t(a)?(u=a.childType,l=a.tag):u=a,zb(u))return Bb({expr:e,env:t,context:n,scrutineeExpr:o,scrutineeType:u,scrutineeValue:s});if(!qe(u))throw m({token:i.token,errorMessage:`Expected enum type or primitive type (integer, bool) for match expression, got ${a?x(a):"unknown type"}`});let c=u,f=r.slice(1),p=[],_,d=new Set,g=!1,y=!1,h=[],v=[];for(let W=0;W<f.length;W++){let P=f[W],G=t;if(!S(P)||!T(P,"=>",2))throw m({token:P.token,errorMessage:`Expected ":" for match pattern, got ${L(P)}`});let U=P.args[0],X=P.args[1];if(S(U)&&T(U,".",1)||$n(U,"_")){if(y)throw m({token:U.token,errorMessage:'Wildcard pattern "_" can only be used once and must be the last match arm in a "match" expression.'});let re;if(S(U)){if(re=U.args[0],!H(re))throw m({token:U.token,errorMessage:`Expected identifier for enum variant, got ${L(re)}`})}else y=!0,re=U;let ee=re.token.value,fe=c.variants.find(ke=>ke.name===ee);if(!fe&&ee!=="_")throw m({token:U.token,errorMessage:`Enum variant "${ee}" not found in ${x(c)}`});if(fe&&fe.fields&&fe.fields.length>0)throw m({token:U.token,errorMessage:`Enum variant "${ee}" has ${fe.fields.length} field(s) and must be destructured. Use .${ee}(...) instead of .${ee}`});if(d.add(ee),ee!=="_"&&Dn(s)&&s.variantName!==ee)continue;let de={...c,selectedVariantName:ee==="_"?void 0:ee};re.$={env:G,type:de,value:void 0,pathCollection:[]};let Q=de;l&&l==="Ptr"&&(Q=Ko(de));let pe=X;G=Ct(G),U.$={env:G,type:Q,value:void 0,pathCollection:[],caseExecuted:!0};let Z=gn({expr:pe,env:G,context:{...n,isExecuting:Dn(s)&&s.variantName===ee},variablesToAdd:[]});if(!(($=Z.$)!=null&&$.type))throw m({token:pe.token,errorMessage:`Expected type for match result expression, got ${L(pe)}`});let me=nn(Z.$.env,!0);if(G=me,Z.$={...Z.$,env:me},n.expectedType&&!ie(n.expectedType,{type:Z.$.type,env:Z.$.env}))throw m({token:Z.token,errorMessage:`Incompatible type with expected type:
@@ -11113,7 +11113,7 @@ ${L(e)}`});if(T(e,".",1)){let w=e.args[0];if(!H(w)&&!Dt(w))throw m({token:w.toke
11113
11113
  ${L(w)}`});let k=(s=n.expectedType)==null?void 0:s.type;if(!qe(k))throw m({token:e.token,errorMessage:"Failed to infer enum variant type."});let b=w.token.value,A=k,I=A.variants.find(M=>M.name===b);if(!I)throw m({token:w.token,errorMessage:`Enum variant "${b}" not found in enum`});let N={...A,selectedVariantName:b};if(!I.fields)e.$={env:t,type:N,value:Ro(N,b,[]),pathCollection:[]},w.$={env:t,type:N,pathCollection:[]};else{let M=_e(N);e.$={env:t,value:M,type:M.type,pathCollection:[]},w.$=e.$}return e}if(!T(e,".",2))throw m({token:e.token,errorMessage:`Expected "." with 2 arguments, got:
11114
11114
  ${L(e)}`});let r=e.args[0],i=e.args[1];if(r=R({expr:r,env:t,context:{...n,expectedType:void 0}}),(l=r.$)!=null&&l.env&&(t=(u=r.$)==null?void 0:u.env),H(i)&&i.token.value==="*"){if(_t((c=r.$)==null?void 0:c.type)){let w=r.$.type,k=w.childType;z(k)&&(k=Gn(t,k));let b=(f=r.$)==null?void 0:f.value;if(ya(b)){let A=b.targetValue[0],I;return oi(A)?I=A.elements[b.targetIndex]:I=A,e.$={env:t,type:k,value:I,originType:w,isAccessingProperty:!0,pathCollection:[],sourceVariable:r.$.sourceVariable},e.$.ptrTargetValue=b.targetValue,e.$.ptrTargetIndex=b.targetIndex,i.$=e.$,e}if(Ge(b)){let A=oe(k,{variableName:b.variableName?`${b.variableName}.*`:void 0,env:t,context:n});return e.$={env:t,type:k,value:A,originType:w,isAccessingProperty:!0,pathCollection:[]},i.$=e.$,e}return e.$={env:t,type:k,value:void 0,originType:w,isAccessingProperty:!0,pathCollection:[]},i.$=e.$,Ft(e,!1),e}if(En((p=r.$)==null?void 0:p.type)){let w=r.$.type,k=w.childType;return z(k)&&(k=Gn(t,k)),e.$={env:t,type:k,value:void 0,originType:w,isAccessingProperty:!0,pathCollection:[]},i.$=e.$,Ft(e,!1),e}}if(Y((_=r.$)==null?void 0:_.value)){let w=r.$.value;if(qe(w.value)){if(!H(i))throw m({token:i.token,errorMessage:`Expected identifier for enum variant, got:
11115
11115
  ${L(i)}`});{let N=i.token.value,M=w.value.trait.fields.find(V=>V.label===N);if(M)return e.$={env:t,type:M.type,value:M.assignedValue,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}let k=i.token.value,b=w.value,A=b.variants.find(N=>N.name===k);if(!A)throw m({token:i.token,errorMessage:`Enum variant "${k}" not found in enum`});let I={...b,selectedVariantName:k};if(!A.fields)e.$={env:t,type:I,value:Ro(I,k,[]),isAccessingProperty:!0,pathCollection:[]},i.$=e.$;else{let N=_e(I);e.$={env:t,type:N.type,value:N,isAccessingProperty:!0,pathCollection:[]},i.$=e.$}return e}else if(w.value.trait){if(!Dt(i))throw m({token:i.token,errorMessage:`Expected identifier for type method, got:
11116
- ${L(i)}`});let k=i.token.value,b=w.value.trait.fields.findLast(A=>A.label===k);if(b){if(b.assignedValue){let A=b.assignedValue.type;return e.$={env:t,type:A,value:b.assignedValue,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}if(b.unassignedSomeType){let A=_e(b.unassignedSomeType);return e.$={env:t,type:A.type,value:A,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}return e.$={env:t,type:b.type,value:void 0,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}else{for(let N of w.value.trait.fields)if(N.label===""&&N.assignedValue&&mn(N.assignedValue)){let M=N.assignedValue,V=M.type,O=V.fields.findIndex(W=>W.label===k);if(O>=0){let W=V.fields[O],P=M.fields[O];if(te(W.type))continue;if(P)return e.$={env:t,type:P.type,value:P,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e;if(W.unassignedSomeType){let G=_e(W.unassignedSomeType);return e.$={env:t,type:G.type,value:G,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}}}let A=Di({concreteType:w.value,methodName:k,env:t});if(A.length===1){let N=A[0];return e.$={env:t,type:N.type,value:N.value,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}let I=vu({concreteType:w.value,propertyName:k,env:t});return I?(e.$={env:t,type:I.type,value:I.value,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e):(e.$=void 0,e)}}else if(Qe(w.value)){if(!Dt(i))throw m({token:i.token,errorMessage:`Expected identifier for type method, got:
11116
+ ${L(i)}`});let k=i.token.value,b=w.value.trait.fields.findLast(A=>A.label===k);if(b){if(b.assignedValue){let A=b.assignedValue.type;return e.$={env:t,type:A,value:b.assignedValue,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}if(b.unassignedSomeType){let A=_e(b.unassignedSomeType);return e.$={env:t,type:A.type,value:A,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}return e.$={env:t,type:b.type,value:void 0,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}else{for(let N of w.value.trait.fields)if(N.label===""&&N.assignedValue&&mn(N.assignedValue)){let M=N.assignedValue,V=M.type,O=V.fields.findIndex(W=>W.label===k);if(O>=0){let W=V.fields[O],P=M.fields[O];if(te(W.type))continue;if(P)return e.$={env:t,type:P.type,value:P,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e;if(W.unassignedSomeType){let G=_e(W.unassignedSomeType);return e.$={env:t,type:G.type,value:G,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}}}let A=Mi({concreteType:w.value,methodName:k,env:t});if(A.length===1){let N=A[0];return e.$={env:t,type:N.type,value:N.value,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}let I=vu({concreteType:w.value,propertyName:k,env:t});return I?(e.$={env:t,type:I.type,value:I.value,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e):(e.$=void 0,e)}}else if(Qe(w.value)){if(!Dt(i))throw m({token:i.token,errorMessage:`Expected identifier for type method, got:
11117
11117
  ${L(i)}`});let k=i.token.value,A=w.value.fields.find(I=>I.label===k);return A?(e.$={env:t,type:A.type,value:A.assignedValue??oe(A.type,{variableName:A.label,env:t,context:n}),pathCollection:[],isAccessingProperty:!0},i.$=e.$,e):(e.$=void 0,e)}else if(ht(w.value)){if(!Dt(i))throw m({token:i.token,errorMessage:`Expected identifier for type method, got:
11118
11118
  ${L(i)}`});let k=i.token.value,b=w.value;if(b.receiverType&&b.receiverType.trait){for(let N of b.receiverType.trait.fields)if(N.label===""&&N.assignedValue&&mn(N.assignedValue)){let M=N.assignedValue,V=M.type;if(!ie({type:b,env:t},{type:V,env:t}))continue;let O=V.fields.findIndex(W=>W.label===k&&te(W.type));if(O>=0){let W=V.fields[O];if(te(W.type)){let P=M.fields[O];if(P){let G=W.type;return $e(P)&&P.specializedType&&(G=P.specializedType),e.$={env:t,type:G,value:P,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}}}}let I=Kp({concreteType:b.receiverType,traitType:b,methodName:k,env:t});if(I)return e.$={env:t,type:I.type,value:I.value,pathCollection:[],isAccessingProperty:!0},i.$=e.$,e}let A=b.fields.find(I=>I.label===k);return A?(e.$={env:t,type:A.type,value:A.assignedValue??oe(A.type,{variableName:A.label,env:t,context:n}),pathCollection:[],isAccessingProperty:!0},i.$=e.$,e):(e.$=void 0,e)}}let o=(d=r.$)==null?void 0:d.type,a=(g=r.$)==null?void 0:g.type;for(;o&&_t(o);)o=o.childType;if(st(o)||ze(o)||ln(o)){let w=o.fields,k=r.$.value;if(H(i)){if(i.token.type==="integer"){if(!st((y=r.$)==null?void 0:y.type))throw m({token:i.token,errorMessage:"Accessing tuple field by index is only allowed for tuples."});let b=parseInt(i.token.value,10);if(isNaN(b))throw m({token:i.token,errorMessage:`Expected integer for tuple index, got:
11119
11119
  ${L(i)}`});let A=w.length;if(b<0||b>=A)throw m({token:i.token,errorMessage:`Index out of bounds: ${b} for accessing field in:
@@ -11123,7 +11123,7 @@ ${L(i)}`});let w=i.token.value,k=o.variants.find(b=>b.name===o.selectedVariantNa
11123
11123
  ${L(e)}`});let r=n.isEvaluatingFunctionBodyOrAsyncBlock.type;if(!T(e,D.recur))throw m({token:e.token,errorMessage:`Expected recur, got:
11124
11124
  ${L(e)}`});if(n.isAnalyzingCtfeCapability||n.isValidatingFunctionDefinition){let a=n.isEvaluatingFunctionBodyOrAsyncBlock.value,{returnType:s,runtimeArgExprsInOrder:l,callerEnv:u}=Fo({functionValue:$e(a)?a:void 0,functionType:r,expr:e,functionCalleeExpr:e.func,argExprs:e.args,callerEnv:t,context:n,isMethodCall:!1,skipSpecialization:!0,skipCtfeExecution:!0});return t=nn(u),e.$={type:s,value:oe(s,{variableName:"recur_result_"+Nt(t.modulePath),env:t,context:n}),env:t,pathCollection:[],runtimeArgExprsInOrder:l},e}return ni({expr:e,env:t,givenFunc:{type:r,value:n.isEvaluatingFunctionBodyOrAsyncBlock.value??void 0},context:{...n}})}var uT=j(()=>{ft();xe();ce();yn();ge();oa();bf()});function cT({expr:e,env:t,context:n}){var a;if(!T(e,D.runtime,1))throw m({token:e.token,errorMessage:`Expected runtime(expr), got:
11125
11125
  ${L(e)}`});if(n.isAnalyzingCtfeCapability)throw m({token:e.token,errorMessage:'Cannot use "runtime" during compile-time function evaluation analysis. The "runtime" keyword forces runtime evaluation and prevents CTFE.'});let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if(!((a=i.$)!=null&&a.type))throw m({token:i.token,errorMessage:`Failed to evaluate runtime argument:
11126
- ${L(i)}`});let o=un({type:i.$.type,expectedType:void 0,expr:i,env:i.$.env??t});return e.$={type:o,value:void 0,env:i.$.env??t,pathCollection:i.$.pathCollection??[]},e}var fT=j(()=>{xe();ce();Je();Ke()});function pT({expr:e,env:t,context:n}){He(e,"<:",2);let r=e.args[0],i=e.args[1],o=R({expr:r,env:t,context:{...n}});if(!o.$||!o.$.value||!Y(o.$.value))throw m({token:r.token,errorMessage:"Expected type for left-hand side expression."});t=o.$.env;let a=o.$.value;if(n.isInsideWhereClause&&!z(a.value))throw m({token:r.token,errorMessage:`In a where clause, the left-hand side of <: must be a type parameter (SomeType), got: ${L(r)} of type ${x(a.value)}`});let s=[];if(S(i)&&T(i,D.tuple))for(let _ of i.args)S(_)&&T(_,"!")&&_.args.length===1?s.push({expr:_.args[0],isNegated:!0}):s.push({expr:_,isNegated:!1});else S(i)&&T(i,"!")&&i.args.length===1?s.push({expr:i.args[0],isNegated:!0}):s.push({expr:i,isNegated:!1});let l=[];for(let{expr:_,isNegated:d}of s){let g=R({expr:_,env:t,context:{...n}});if(!g.$||!g.$.value||!Y(g.$.value)||!ht(g.$.value.value))throw m({token:_.token,errorMessage:"Expected trait type for right-hand side expression."});t=g.$.env;let y=g.$.value.value;if(y.receiverType)throw m({token:_.token,errorMessage:"Expected trait type already has a receiver type assigned."});if(d&&!n.isInsideWhereClause)throw m({token:_.token,errorMessage:"Negated trait constraints !(Trait) are only allowed in where clauses."});l.push({traitType:y,expr:_,isNegated:d})}if(n.isInsideWhereClause&&z(a.value)){let _=a.value;for(let{traitType:d,isNegated:g}of l){let y={...d,receiverType:_};t=Ti({env:t,someType:_,traitType:y,isNegated:g})}return e.$={env:t,value:a,type:a.type,pathCollection:[]},e}if(l.length>1)throw m({token:i.token,errorMessage:"Multiple trait constraints (tuple form) are only allowed in where clauses."});let{traitType:u}=l[0],c=a.value;if(!z(c)&&!Mn({targetType:c,traitType:u,env:t}))throw m({token:e.token,errorMessage:`Type "${x(c)}" does not implement trait "${u.typeName??x(u)}".`});let f={...u,receiverType:a.value},p=_e(f);return e.$={env:t,value:p,type:p.type,pathCollection:[]},e}var _T=j(()=>{ft();xe();ce();Ae();Je();ge();Gt();Ke()});function dT({expr:e,env:t,context:n}){if(!T(e,D.test))throw m({token:e.token,errorMessage:`Expected test, got ${e.tag}`});if(e.args.length!==2&&e.args.length!==3)throw m({token:e.token,errorMessage:`test expects 2 or 3 arguments (name, [using clause], body), got ${e.args.length}`});let r=e.args.length===3,i=e.args[0],o=r?e.args[1]:void 0,a=r?e.args[2]:e.args[1];if(o&&!T(o,D.using))throw m({token:o.token,errorMessage:`Expected using(...) clause as second argument, got: ${L(o)}`});let s=R({expr:i,env:t,context:{...n}});if(!s.$||!s.$.value)throw m({token:i.token,errorMessage:`Failed to evaluate test name: ${L(i)}`});if(t=s.$.env,!St(s.$.value))throw m({token:i.token,errorMessage:`Expected string for test name, got ${L(i)}`});if(r){let l=mt(o);o.$={env:t,type:se.type,value:se,pathCollection:[],originalExpr:l};let u=mt(a);a.$={env:t,type:se.type,value:se,pathCollection:[],originalExpr:u}}else{let l=mt(a),u=R({expr:a,env:t,context:{...n,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"test-block",evaluationEnv:t}}});if(!u.$)throw m({token:a.token,errorMessage:`Failed to evaluate test body: ${L(a)}`});if(!Pe(u.$.type))throw m({token:a.token,errorMessage:`Test body must have 'unit' type, got ${x(u.$.type)}`});u.$.originalExpr=l}return e.$={env:t,type:se.type,value:se,pathCollection:[]},e}var mT=j(()=>{xe();ce();Ae();Je();xn();ge();Ke()});function yT({expr:e,env:t,context:n}){var s,l;if(!T(e,F.typeof,1))throw m({token:e.token,errorMessage:`Expected "typeof" with 1 argument, got:
11126
+ ${L(i)}`});let o=un({type:i.$.type,expectedType:void 0,expr:i,env:i.$.env??t});return e.$={type:o,value:void 0,env:i.$.env??t,pathCollection:i.$.pathCollection??[]},e}var fT=j(()=>{xe();ce();Je();Ke()});function pT({expr:e,env:t,context:n}){He(e,"<:",2);let r=e.args[0],i=e.args[1],o=R({expr:r,env:t,context:{...n}});if(!o.$||!o.$.value||!Y(o.$.value))throw m({token:r.token,errorMessage:"Expected type for left-hand side expression."});t=o.$.env;let a=o.$.value;if(n.isInsideWhereClause&&!z(a.value))throw m({token:r.token,errorMessage:`In a where clause, the left-hand side of <: must be a type parameter (SomeType), got: ${L(r)} of type ${x(a.value)}`});let s=[];if(S(i)&&T(i,D.tuple))for(let _ of i.args)S(_)&&T(_,"!")&&_.args.length===1?s.push({expr:_.args[0],isNegated:!0}):s.push({expr:_,isNegated:!1});else S(i)&&T(i,"!")&&i.args.length===1?s.push({expr:i.args[0],isNegated:!0}):s.push({expr:i,isNegated:!1});let l=[];for(let{expr:_,isNegated:d}of s){let g=R({expr:_,env:t,context:{...n}});if(!g.$||!g.$.value||!Y(g.$.value)||!ht(g.$.value.value))throw m({token:_.token,errorMessage:"Expected trait type for right-hand side expression."});t=g.$.env;let y=g.$.value.value;if(y.receiverType)throw m({token:_.token,errorMessage:"Expected trait type already has a receiver type assigned."});if(d&&!n.isInsideWhereClause)throw m({token:_.token,errorMessage:"Negated trait constraints !(Trait) are only allowed in where clauses."});l.push({traitType:y,expr:_,isNegated:d})}if(n.isInsideWhereClause&&z(a.value)){let _=a.value;for(let{traitType:d,isNegated:g}of l){let y={...d,receiverType:_};t=Ei({env:t,someType:_,traitType:y,isNegated:g})}return e.$={env:t,value:a,type:a.type,pathCollection:[]},e}if(l.length>1)throw m({token:i.token,errorMessage:"Multiple trait constraints (tuple form) are only allowed in where clauses."});let{traitType:u}=l[0],c=a.value;if(!z(c)&&!Mn({targetType:c,traitType:u,env:t}))throw m({token:e.token,errorMessage:`Type "${x(c)}" does not implement trait "${u.typeName??x(u)}".`});let f={...u,receiverType:a.value},p=_e(f);return e.$={env:t,value:p,type:p.type,pathCollection:[]},e}var _T=j(()=>{ft();xe();ce();Ae();Je();ge();Gt();Ke()});function dT({expr:e,env:t,context:n}){if(!T(e,D.test))throw m({token:e.token,errorMessage:`Expected test, got ${e.tag}`});if(e.args.length!==2&&e.args.length!==3)throw m({token:e.token,errorMessage:`test expects 2 or 3 arguments (name, [using clause], body), got ${e.args.length}`});let r=e.args.length===3,i=e.args[0],o=r?e.args[1]:void 0,a=r?e.args[2]:e.args[1];if(o&&!T(o,D.using))throw m({token:o.token,errorMessage:`Expected using(...) clause as second argument, got: ${L(o)}`});let s=R({expr:i,env:t,context:{...n}});if(!s.$||!s.$.value)throw m({token:i.token,errorMessage:`Failed to evaluate test name: ${L(i)}`});if(t=s.$.env,!St(s.$.value))throw m({token:i.token,errorMessage:`Expected string for test name, got ${L(i)}`});if(r){let l=mt(o);o.$={env:t,type:se.type,value:se,pathCollection:[],originalExpr:l};let u=mt(a);a.$={env:t,type:se.type,value:se,pathCollection:[],originalExpr:u}}else{let l=mt(a),u=R({expr:a,env:t,context:{...n,isEvaluatingFunctionBodyOrAsyncBlock:{kind:"test-block",evaluationEnv:t}}});if(!u.$)throw m({token:a.token,errorMessage:`Failed to evaluate test body: ${L(a)}`});if(!Pe(u.$.type))throw m({token:a.token,errorMessage:`Test body must have 'unit' type, got ${x(u.$.type)}`});u.$.originalExpr=l}return e.$={env:t,type:se.type,value:se,pathCollection:[]},e}var mT=j(()=>{xe();ce();Ae();Je();xn();ge();Ke()});function yT({expr:e,env:t,context:n}){var s,l;if(!T(e,F.typeof,1))throw m({token:e.token,errorMessage:`Expected "typeof" with 1 argument, got:
11127
11127
  ${L(e)}`});let r=e.args[0],i=R({expr:r,env:t,context:{...n}});if((s=i.$)!=null&&s.env&&(t=i.$.env),!((l=i.$)!=null&&l.type))throw m({token:r.token,errorMessage:`Expected type for expression, got:
11128
11128
  ${L(r)}`});let o=i.$.type,a=_e(o);return e.$={env:t,type:a.type,value:a,pathCollection:[]},e}var gT=j(()=>{xe();ce();ge();Ke()});function rc({expr:e,env:t,context:n}){if(e.args.length!==2&&e.args.length!==3)throw m({token:e.token,errorMessage:`Expected 2 or 3 arguments for while loop, got ${e.args.length}`});let r=e.args[0],i,o;e.args.length===3?(i=e.args[1],o=e.args[2]):o=e.args[1];let a=gn({expr:r,env:t,context:{...n},variablesToAdd:[]});if(!a.$)throw m({token:r.token,errorMessage:`Failed to evaluate the condition expression:
11129
11129
  ${L(r)}`});if(!Lr(a.$.type))throw m({token:r.token,errorMessage:`Expected bool type for condition expression, got:
@@ -11132,7 +11132,7 @@ ${L(o)}`});if(cn(u.$.controlFlow)){if(Kt(u.$.controlFlow,"return")||Kt(u.$.contr
11132
11132
  ${L(i)}`});f=p.$.env}if(Lt(s))return rc({expr:e,env:f,context:{...n}});e.$={env:f,pathCollection:[],type:se.type,value:l?se:void 0}}return e}if(!Pe(u.$.type))throw m({token:o.token,errorMessage:`Expected the while loop body to return unit, but got:
11133
11133
  ${x(u.$.type)}`});let c=u.$.value===void 0;if(t=u.$.env,i){let f=R({expr:i,env:t,context:{...n}});if(!f.$)throw m({token:i.token,errorMessage:`Failed to evaluate the step expression:
11134
11134
  ${L(i)}`});t=f.$.env}return Lt(s)&&s.value===!0&&c?(e.$={env:t,pathCollection:[],type:se.type,value:void 0},e):Lt(s)&&s.value===!0?rc({expr:e,env:t,context:{...n}}):(e.$={env:t,pathCollection:[],type:se.type,value:l?se:void 0},e)}}var hT=j(()=>{xe();ce();Ae();Je();xn();ge();Ke();fi()});function vT(e){let t=process.env[e];return t==="1"||(t==null?void 0:t.toLowerCase())==="true"}function Lo({expr:e,env:t,context:n}){if(Gb&&(os.evalStart||(os.evalStart=Date.now()),os.evalCount++,os.evalCount%1e5===0&&console.log(`[EVAL] ${os.evalCount} calls, ${Date.now()-os.evalStart}ms elapsed`)),H(e))switch(e.token.type){case"identifier":case"operator":return ec({expr:e,env:t,context:{...n},throwErrorOnUndefined:!0});case"integer":return wv(e,t,{...n});case"float":return Cv(e,t,{...n});case"string":return Lv(e,t);case"char":return gv(e,t);case"bool":return mv(e,t);default:throw m({token:e.token,errorMessage:`(1) Evaluating the expression (tag: ${e.tag}, token: ${e.token.type}) below is not implemented:
11135
- ${L(e)}`})}else if(T(e,":",2)){let{expr:r}=Ju({expr:e,env:t,context:n});return r}else{if(T(e,":=",2)||T(e,"::",2))return eT({expr:e,env:t,context:n});if(T(e,"=",2))return Nv({expr:e,env:t,context:n});if(T(e,"->",2))return S(e.args[0])&&(T(e.args[0],D.fn)||T(e.args[0],D.unsafe_fn))?xu({expr:e,env:t,context:{...n,isUnsafeFunctionType:T(e.args[0],D.unsafe_fn)}}):S(e.args[0])&&T(e.args[0],D.Fn)?Hh({expr:e,env:t,context:{...n}}):Zu({expr:e,env:t,context:{...n}});if(T(e,"=>",2))return S(e.args[0])&&T(e.args[0],D.fn)?Oh({expr:e,env:t,context:{...n}}):Zu({expr:e,env:t,context:{...n}});if(T(e,"=>>",2))return Zu({expr:e,env:t,context:{...n}});if(T(e,D.recur))return lT({expr:e,env:t,context:{...n}});if(T(e,D.runtime))return cT({expr:e,env:t,context:{...n}});if(T(e,D.extern))return Pv({expr:e,env:t,context:{...n}});if(T(e,D.c_include))return xv({expr:e,env:t,context:{...n}});if(T(e,D.test))return dT({expr:e,env:t,context:{...n}});if(T(e,D.cond))return Dv({expr:e,env:t,context:{...n}});if(T(e,D.match))return nT({expr:e,env:t,context:{...n}});if(T(e,D.tuple))return Iv({expr:e,env:t,context:{...n}});if(T(e,D.array))return _v({expr:e,env:t,context:{...n}});if(T(e,D.comptime_list))return vv({expr:e,env:t,context:{...n}});if(T(e,D.dyn))return $v({expr:e,env:t,context:{...n}});if(T(e,D.struct))return ts({expr:e,env:t,context:{...n}});if(T(e,D.object))return ev({expr:e,env:t,context:{...n}});if(T(e,D.newtype))return Zh({expr:e,env:t,context:{...n}});if(T(e,D.enum))return Yh({expr:e,env:t,context:{...n}});if(T(e,D.union))return cv({expr:e,env:t,context:{...n}});if(T(e,"."))return aT({expr:e,env:t,context:{...n}});if(T(e,D.begin))return gn({expr:e,env:t,context:{...n},variablesToAdd:[]});if(T(e,D.module))return Qh({expr:e,env:t,context:{...n}});if(T(e,D.trait))return av({expr:e,env:t,context:{...n}});if(T(e,D.Impl))return zg({expr:e,env:t,context:{...n}});if(T(e,D.impl))return Xp({expr:e,env:t,context:{...n}});if(T(e,F.typeof))return yT({expr:e,env:t,context:{...n}});if(T(e,F.sizeof))return mh({expr:e,env:t,context:{...n}});if(T(e,F.alignof))return Km({expr:e,env:t,context:{...n}});if(T(e,F.typeid))return kh({expr:e,env:t,context:{...n}});if(T(e,F.downcast))return By({expr:e,env:t,context:{...n}});if(T(e,F.rc))return _h({expr:e,env:t,context:{...n}});if(T(e,"<:"))return pT({expr:e,env:t,context:{...n}});if(T(e,F.the))return gh({expr:e,env:t,context:{...n}});if(T(e,D.import))return Xv({expr:e,env:t,context:{...n},stdPath:n.stdPath});if(T(e,D.open))return iT({expr:e,env:t,context:{...n}});if(T(e,D.Ptr,1))return xh({expr:e,env:t,context:{...n}});if(T(e,D.Iso,1))return yg({expr:e,env:t,context:{...n}});if(T(e,D.Arc,1))return Zy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_address_of,1))return fh({expr:e,env:t,context:{...n}});if(T(e,D.Tuple))return lv({expr:e,env:t,context:{...n}});if(T(e,D.Array))return Dh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_array_fill,2))return Jm({expr:e,env:t,context:{...n}});if(T(e,D.Slice))return nv({expr:e,env:t,context:{...n}});if(T(e,D.ComptimeList))return Ph({expr:e,env:t,context:{...n}});if(T(e,D.Future))return Kh({expr:e,env:t,context:{...n}});if(T(e,D.Concrete))return zh({expr:e,env:t,context:{...n}});if(T(e,D.Dyn))return Gh({expr:e,env:t,context:{...n}});if(T(e,F.comptime_expect_error))return oy({expr:e,env:t,context:{...n}});if(T(e,F.comptime_assert))return ty({expr:e,env:t,context:{...n}});if(T(e,F.comptime_fn))return sy({expr:e,env:t,context:{...n}});if(T(e,F.comptime_print))return Ty({expr:e,env:t,context:{...n}});if(T(e,F.panic))return qg({expr:e,env:t,context:{...n}});if(T(e,F.macro_expand))return Wg({expr:e,env:t,context:{...n}});if(T(e,D.op_and)||T(e,D.op_or))return Qm({expr:e,env:t,context:{...n}});if(T(e,D.escape))return Ov({expr:e,env:t,context:{...n}});if(T(e,F.consume))return Cy({expr:e,env:t,context:{...n}});if(T(e,F.___drop))return wg({expr:e,env:t,context:{...n}});if(T(e,F.___dup))return Lg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_decr_rc))return wy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_incr_rc))return Fy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_decr_rc_atomic))return Ay({expr:e,env:t,context:{...n}});if(T(e,F.__yo_incr_rc_atomic))return Ly({expr:e,env:t,context:{...n}});if(T(e,F.__yo_iso_extract))return Dy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_iso_dispose))return My({expr:e,env:t,context:{...n}});if(T(e,F.__yo_arc_dispose))return Oy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_drop_array_element))return Ry({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dup_array_element))return Py({expr:e,env:t,context:{...n}});if(T(e,F.__yo_drop_tuple_element))return Uy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dup_tuple_element))return zy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_rc_own))return Iy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dyn_drop))return Sy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dyn_dup))return Ny({expr:e,env:t,context:{...n}});if(T(e,F.__yo_sometype_drop))return xy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_sometype_dup))return Vy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_gc_collect))return Og({expr:e,env:t,context:{...n}});if(T(e,D.quote))return Gg({expr:e,env:t,context:{...n}});if(T(e,D.gensym))return Pg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_is_atom))return Ig({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_is_fn_call))return Sg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_get_callee))return Ng({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_get_args))return xg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_to_string))return Vg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_eq))return Dg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_car))return uy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_cdr))return cy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_cons))return fy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_append))return py({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_length))return _y({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_element_type))return dy({expr:e,env:t,context:{...n}});if(S(e)&&e.func.tag==="Atom"&&typeof e.func.token.value=="string"&&(e.func.token.value.startsWith("__yo_comptime_u8_")||e.func.token.value.startsWith("__yo_comptime_i8_")||e.func.token.value.startsWith("__yo_comptime_u16_")||e.func.token.value.startsWith("__yo_comptime_i16_")||e.func.token.value.startsWith("__yo_comptime_u32_")||e.func.token.value.startsWith("__yo_comptime_i32_")||e.func.token.value.startsWith("__yo_comptime_u64_")||e.func.token.value.startsWith("__yo_comptime_i64_")||e.func.token.value.startsWith("__yo_comptime_usize_")||e.func.token.value.startsWith("__yo_comptime_isize_")||e.func.token.value.startsWith("__yo_comptime_f32_")||e.func.token.value.startsWith("__yo_comptime_f64_")||e.func.token.value.startsWith("__yo_comptime_int_")||e.func.token.value.startsWith("__yo_comptime_float_")))return hy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_bool_and,2)||T(e,F.__yo_comptime_bool_or,2)||T(e,F.__yo_comptime_bool_eq,2)||T(e,F.__yo_comptime_bool_neq,2)||T(e,F.__yo_comptime_bool_not,1)||T(e,F.__yo_comptime_bool_to_comptime_string,1))return ry({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_string_concat,2)||T(e,F.__yo_comptime_string_eq,2)||T(e,F.__yo_comptime_string_neq,2)||T(e,F.__yo_comptime_string_lt,2)||T(e,F.__yo_comptime_string_lte,2)||T(e,F.__yo_comptime_string_gt,2)||T(e,F.__yo_comptime_string_gte,2)||T(e,F.__yo_comptime_string_length,1)||T(e,F.__yo_comptime_string_to_upper,1)||T(e,F.__yo_comptime_string_to_lower,1)||T(e,F.__yo_comptime_string_slice))return $y({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_to_comptime_string,1))return vh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_are_types_compatible,2))return Th({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_contains_rc_type,1))return Eh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_can_form_rc_cycle,1))return $h({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_impls,2))return bh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_var_print_info,1))return Ah({expr:e,env:t,context:{...n}});if(T(e,F.__yo_var_is_owning_the_rc_value))return Ih({expr:e,env:t,context:{...n}});if(T(e,F.__yo_var_has_other_aliases))return Sh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_process_platform)||T(e,F.__yo_process_arch))return rh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_build_project)||T(e,F.__yo_build_executable)||T(e,F.__yo_build_static_library)||T(e,F.__yo_build_shared_library)||T(e,F.__yo_build_test)||T(e,F.__yo_build_run)||T(e,F.__yo_build_step)||T(e,F.__yo_build_step_depend_on)||T(e,F.__yo_build_target_host)||T(e,F.__yo_build_target_parse)||T(e,F.__yo_build_dependency)||T(e,F.__yo_build_path_dependency)||T(e,F.__yo_build_system_library)||T(e,F.__yo_build_link)||T(e,F.__yo_build_link_system_library)||T(e,F.__yo_build_option)||T(e,F.__yo_build_dep_artifact)){for(let r=0;r<e.args.length;r++)e.args[r]=Lo({expr:e.args[r],env:t,context:{...n}});return ch({expr:e,env:t,context:{...n}})}else return T(e,D.while)?rc({expr:e,env:t,context:{...n}}):T(e,F.va_start)?Fh({expr:e,env:t,context:{...n}}):ni({expr:e,env:t,context:{...n}})}}var Gb,TT,os,Bu=j(()=>{xe();ce();pn();Xm();Zm();ey();ny();iy();ay();ly();my();vy();Ey();by();ky();Gy();Fg();Ag();Mg();Rg();Ug();Bg();Yg();Hg();ih();aa();ph();kf();dh();yf();yh();hh();Ch();wh();Lh();Nh();Tf();oa();Cf();Vh();Mh();Rh();Uh();Bh();Wh();qh();jh();io();Xh();Xu();Jh();tv();rv();Qu();sv();uv();fv();pv();dv();yv();hv();Tv();bv();kv();Zi();Fv();Av();Sv();Vf();fi();Sf();Vv();Mv();Rv();Uv();Nf();Qv();tT();rT();oT();sT();uT();fT();_T();mT();gT();hT();Gb=vT("YO_DEBUG_EVAL")||vT("YO_DEBUG_EVAL_PROFILE"),TT=globalThis,os=TT.__yoEvalProfilerState??(TT.__yoEvalProfilerState={evalCount:0,evalStart:0})});function Yb(e,t){return e.some(n=>(n.type==="single_line_comment"||n.type==="multi_line_comment")&&n.value.includes(t))}var ET,$T,Wb,ll,Bf=j(()=>{ET=require("node:fs"),$T=Tn(require("path"));ft();Ci();pn();Ae();xe();Mc();Zi();Wb=process.env.YO_SKIP_PRELUDE==="1"||process.env.YO_SKIP_PRELUDE==="true";ll=class{constructor({modulePath:t,stdPath:n,loadModule:r,inputString:i,allowPartialModule:o=!1}){if(this.modulePath=t,this.allowPartialModule=o,!this.modulePath.match(/^file:\/\//))throw new Error(`Invalid file protocol: ${this.modulePath}. Only file:// is supported for now. `);try{if(this.inputString=i??(0,ET.readFileSync)(t.replace(/^file:\/\//,""),"utf-8"),this.parser=new da({modulePath:t,inputString:this.inputString}),this.program=this.parser.getProgram(),this.tokens=this.parser.getTokens(),!this.allowPartialModule&&this.parser.getParserError())throw this.parser.getParserError();this.evaluateProgram(n,r)}catch(a){throw new Error(`Failed to import module "${t}":
11135
+ ${L(e)}`})}else if(T(e,":",2)){let{expr:r}=Ju({expr:e,env:t,context:n});return r}else{if(T(e,":=",2)||T(e,"::",2))return eT({expr:e,env:t,context:n});if(T(e,"=",2))return Nv({expr:e,env:t,context:n});if(T(e,"->",2))return S(e.args[0])&&(T(e.args[0],D.fn)||T(e.args[0],D.unsafe_fn))?xu({expr:e,env:t,context:{...n,isUnsafeFunctionType:T(e.args[0],D.unsafe_fn)}}):S(e.args[0])&&T(e.args[0],D.Fn)?Hh({expr:e,env:t,context:{...n}}):Zu({expr:e,env:t,context:{...n}});if(T(e,"=>",2))return S(e.args[0])&&T(e.args[0],D.fn)?Oh({expr:e,env:t,context:{...n}}):Zu({expr:e,env:t,context:{...n}});if(T(e,"=>>",2))return Zu({expr:e,env:t,context:{...n}});if(T(e,D.recur))return lT({expr:e,env:t,context:{...n}});if(T(e,D.runtime))return cT({expr:e,env:t,context:{...n}});if(T(e,D.extern))return Pv({expr:e,env:t,context:{...n}});if(T(e,D.c_include))return xv({expr:e,env:t,context:{...n}});if(T(e,D.test))return dT({expr:e,env:t,context:{...n}});if(T(e,D.cond))return Dv({expr:e,env:t,context:{...n}});if(T(e,D.match))return nT({expr:e,env:t,context:{...n}});if(T(e,D.tuple))return Iv({expr:e,env:t,context:{...n}});if(T(e,D.array))return _v({expr:e,env:t,context:{...n}});if(T(e,D.comptime_list))return vv({expr:e,env:t,context:{...n}});if(T(e,D.dyn))return $v({expr:e,env:t,context:{...n}});if(T(e,D.struct))return ts({expr:e,env:t,context:{...n}});if(T(e,D.object))return ev({expr:e,env:t,context:{...n}});if(T(e,D.newtype))return Zh({expr:e,env:t,context:{...n}});if(T(e,D.enum))return Yh({expr:e,env:t,context:{...n}});if(T(e,D.union))return cv({expr:e,env:t,context:{...n}});if(T(e,"."))return aT({expr:e,env:t,context:{...n}});if(T(e,D.begin))return gn({expr:e,env:t,context:{...n},variablesToAdd:[]});if(T(e,D.module))return Qh({expr:e,env:t,context:{...n}});if(T(e,D.trait))return av({expr:e,env:t,context:{...n}});if(T(e,D.Impl))return zg({expr:e,env:t,context:{...n}});if(T(e,D.impl))return Xp({expr:e,env:t,context:{...n}});if(T(e,F.typeof))return yT({expr:e,env:t,context:{...n}});if(T(e,F.sizeof))return mh({expr:e,env:t,context:{...n}});if(T(e,F.alignof))return Km({expr:e,env:t,context:{...n}});if(T(e,F.typeid))return kh({expr:e,env:t,context:{...n}});if(T(e,F.downcast))return By({expr:e,env:t,context:{...n}});if(T(e,F.rc))return _h({expr:e,env:t,context:{...n}});if(T(e,"<:"))return pT({expr:e,env:t,context:{...n}});if(T(e,F.the))return gh({expr:e,env:t,context:{...n}});if(T(e,D.import))return Xv({expr:e,env:t,context:{...n},stdPath:n.stdPath});if(T(e,D.open))return iT({expr:e,env:t,context:{...n}});if(T(e,D.Ptr,1))return xh({expr:e,env:t,context:{...n}});if(T(e,D.Iso,1))return yg({expr:e,env:t,context:{...n}});if(T(e,D.Arc,1))return Zy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_address_of,1))return fh({expr:e,env:t,context:{...n}});if(T(e,D.Tuple))return lv({expr:e,env:t,context:{...n}});if(T(e,D.Array))return Dh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_array_fill,2))return Jm({expr:e,env:t,context:{...n}});if(T(e,D.Slice))return nv({expr:e,env:t,context:{...n}});if(T(e,D.ComptimeList))return Ph({expr:e,env:t,context:{...n}});if(T(e,D.Future))return Kh({expr:e,env:t,context:{...n}});if(T(e,D.Concrete))return zh({expr:e,env:t,context:{...n}});if(T(e,D.Dyn))return Gh({expr:e,env:t,context:{...n}});if(T(e,F.comptime_expect_error))return oy({expr:e,env:t,context:{...n}});if(T(e,F.comptime_assert))return ty({expr:e,env:t,context:{...n}});if(T(e,F.comptime_fn))return sy({expr:e,env:t,context:{...n}});if(T(e,F.comptime_print))return Ty({expr:e,env:t,context:{...n}});if(T(e,F.panic))return qg({expr:e,env:t,context:{...n}});if(T(e,F.macro_expand))return Wg({expr:e,env:t,context:{...n}});if(T(e,D.op_and)||T(e,D.op_or))return Qm({expr:e,env:t,context:{...n}});if(T(e,D.escape))return Ov({expr:e,env:t,context:{...n}});if(T(e,F.consume))return Cy({expr:e,env:t,context:{...n}});if(T(e,F.___drop))return wg({expr:e,env:t,context:{...n}});if(T(e,F.___dup))return Lg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_decr_rc))return wy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_incr_rc))return Fy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_decr_rc_atomic))return Ay({expr:e,env:t,context:{...n}});if(T(e,F.__yo_incr_rc_atomic))return Ly({expr:e,env:t,context:{...n}});if(T(e,F.__yo_iso_extract))return Dy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_iso_dispose))return My({expr:e,env:t,context:{...n}});if(T(e,F.__yo_arc_dispose))return Oy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_drop_array_element))return Ry({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dup_array_element))return Py({expr:e,env:t,context:{...n}});if(T(e,F.__yo_drop_tuple_element))return Uy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dup_tuple_element))return zy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_rc_own))return Iy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dyn_drop))return Sy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_dyn_dup))return Ny({expr:e,env:t,context:{...n}});if(T(e,F.__yo_sometype_drop))return xy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_sometype_dup))return Vy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_gc_collect))return Og({expr:e,env:t,context:{...n}});if(T(e,D.quote))return Gg({expr:e,env:t,context:{...n}});if(T(e,D.gensym))return Pg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_is_atom))return Ig({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_is_fn_call))return Sg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_get_callee))return Ng({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_get_args))return xg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_to_string))return Vg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_expr_eq))return Dg({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_car))return uy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_cdr))return cy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_cons))return fy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_append))return py({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_length))return _y({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_list_element_type))return dy({expr:e,env:t,context:{...n}});if(S(e)&&e.func.tag==="Atom"&&typeof e.func.token.value=="string"&&(e.func.token.value.startsWith("__yo_comptime_u8_")||e.func.token.value.startsWith("__yo_comptime_i8_")||e.func.token.value.startsWith("__yo_comptime_u16_")||e.func.token.value.startsWith("__yo_comptime_i16_")||e.func.token.value.startsWith("__yo_comptime_u32_")||e.func.token.value.startsWith("__yo_comptime_i32_")||e.func.token.value.startsWith("__yo_comptime_u64_")||e.func.token.value.startsWith("__yo_comptime_i64_")||e.func.token.value.startsWith("__yo_comptime_usize_")||e.func.token.value.startsWith("__yo_comptime_isize_")||e.func.token.value.startsWith("__yo_comptime_f32_")||e.func.token.value.startsWith("__yo_comptime_f64_")||e.func.token.value.startsWith("__yo_comptime_int_")||e.func.token.value.startsWith("__yo_comptime_float_")))return hy({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_bool_and,2)||T(e,F.__yo_comptime_bool_or,2)||T(e,F.__yo_comptime_bool_eq,2)||T(e,F.__yo_comptime_bool_neq,2)||T(e,F.__yo_comptime_bool_not,1)||T(e,F.__yo_comptime_bool_to_comptime_string,1))return ry({expr:e,env:t,context:{...n}});if(T(e,F.__yo_comptime_string_concat,2)||T(e,F.__yo_comptime_string_eq,2)||T(e,F.__yo_comptime_string_neq,2)||T(e,F.__yo_comptime_string_lt,2)||T(e,F.__yo_comptime_string_lte,2)||T(e,F.__yo_comptime_string_gt,2)||T(e,F.__yo_comptime_string_gte,2)||T(e,F.__yo_comptime_string_length,1)||T(e,F.__yo_comptime_string_to_upper,1)||T(e,F.__yo_comptime_string_to_lower,1)||T(e,F.__yo_comptime_string_slice))return $y({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_to_comptime_string,1))return vh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_are_types_compatible,2))return Th({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_contains_rc_type,1))return Eh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_can_form_rc_cycle,1))return $h({expr:e,env:t,context:{...n}});if(T(e,F.__yo_type_impls,2))return bh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_var_print_info,1))return Ah({expr:e,env:t,context:{...n}});if(T(e,F.__yo_var_is_owning_the_rc_value))return Ih({expr:e,env:t,context:{...n}});if(T(e,F.__yo_var_has_other_aliases))return Sh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_process_platform)||T(e,F.__yo_process_arch))return rh({expr:e,env:t,context:{...n}});if(T(e,F.__yo_build_project)||T(e,F.__yo_build_executable)||T(e,F.__yo_build_static_library)||T(e,F.__yo_build_shared_library)||T(e,F.__yo_build_test)||T(e,F.__yo_build_run)||T(e,F.__yo_build_step)||T(e,F.__yo_build_step_depend_on)||T(e,F.__yo_build_target_host)||T(e,F.__yo_build_target_parse)||T(e,F.__yo_build_dependency)||T(e,F.__yo_build_path_dependency)||T(e,F.__yo_build_system_library)||T(e,F.__yo_build_link)||T(e,F.__yo_build_link_system_library)||T(e,F.__yo_build_option)||T(e,F.__yo_build_dep_artifact)){for(let r=0;r<e.args.length;r++)e.args[r]=Lo({expr:e.args[r],env:t,context:{...n}});return ch({expr:e,env:t,context:{...n}})}else return T(e,D.while)?rc({expr:e,env:t,context:{...n}}):T(e,F.va_start)?Fh({expr:e,env:t,context:{...n}}):ni({expr:e,env:t,context:{...n}})}}var Gb,TT,os,Bu=j(()=>{xe();ce();pn();Xm();Zm();ey();ny();iy();ay();ly();my();vy();Ey();by();ky();Gy();Fg();Ag();Mg();Rg();Ug();Bg();Yg();Hg();ih();aa();ph();kf();dh();yf();yh();hh();Ch();wh();Lh();Nh();Tf();oa();Cf();Vh();Mh();Rh();Uh();Bh();Wh();qh();jh();io();Xh();Xu();Jh();tv();rv();Qu();sv();uv();fv();pv();dv();yv();hv();Tv();bv();kv();Zi();Fv();Av();Sv();Vf();fi();Sf();Vv();Mv();Rv();Uv();Nf();Qv();tT();rT();oT();sT();uT();fT();_T();mT();gT();hT();Gb=vT("YO_DEBUG_EVAL")||vT("YO_DEBUG_EVAL_PROFILE"),TT=globalThis,os=TT.__yoEvalProfilerState??(TT.__yoEvalProfilerState={evalCount:0,evalStart:0})});function Yb(e,t){return e.some(n=>(n.type==="single_line_comment"||n.type==="multi_line_comment")&&n.value.includes(t))}var ET,$T,Wb,ll,Bf=j(()=>{ET=require("node:fs"),$T=Tn(require("path"));ft();ki();pn();Ae();xe();Mc();Zi();Wb=process.env.YO_SKIP_PRELUDE==="1"||process.env.YO_SKIP_PRELUDE==="true";ll=class{constructor({modulePath:t,stdPath:n,loadModule:r,inputString:i,allowPartialModule:o=!1}){if(this.modulePath=t,this.allowPartialModule=o,!this.modulePath.match(/^file:\/\//))throw new Error(`Invalid file protocol: ${this.modulePath}. Only file:// is supported for now. `);try{if(this.inputString=i??(0,ET.readFileSync)(t.replace(/^file:\/\//,""),"utf-8"),this.parser=new da({modulePath:t,inputString:this.inputString}),this.program=this.parser.getProgram(),this.tokens=this.parser.getTokens(),!this.allowPartialModule&&this.parser.getParserError())throw this.parser.getParserError();this.evaluateProgram(n,r)}catch(a){throw new Error(`Failed to import module "${t}":
11136
11136
  ${a instanceof fr||a instanceof Hr?a.toString():a instanceof Error?a.message:String(a)}`)}}getProgram(){return this.program}getTokens(){return this.tokens}evaluateProgram(t,n){var l,u;let r=Rc({modulePath:this.modulePath,inputString:this.inputString});if(!Yb(this.tokens,"@skip_prelude")&&!Wb){let c="file://"+$T.default.join(t,"prelude.yo"),{moduleValue:f,moduleError:p}=n(c);if(p)throw p;if(f&&Qe(f.type)){r=Ct(r);for(let _=0;_<f.type.fields.length;_++){let d=f.type.fields[_],g=f.fields[_],{env:y}=Be({env:r,variable:{name:d.label,type:d.type,value:g?[g]:void 0,isCompileTimeOnly:!0,initializedAtToken:((l=d.exprs.labelExpr)==null?void 0:l.token)??d.exprs.expr.token,consumedAtToken:void 0,token:((u=d.exprs.labelExpr)==null?void 0:u.token)??d.exprs.expr.token,isOwningTheRcValue:!1}});r=y}}n_(r)}let{moduleValue:o,env:a,partialModuleError:s}=mu({beginExprs:this.program,env:r,context:{isExecuting:!0,expectedType:void 0,SelfType:void 0,loadModule:n.bind(this),stdPath:t,currentModulePath:this.modulePath},allowPartialModule:this.allowPartialModule});r=a,this.moduleValue=o,this.moduleError=s}getModuleValue(){if(!this.moduleValue)throw new Error("Module value is not set");return this.moduleValue}getModuleError(){return this.parser.getParserError()??this.moduleError}}});function qb(e){let t=e;for(;;){let n=ul.join(t,"std");if((0,bT.existsSync)(n))return n;let r=ul.dirname(t);if(r===t)break;t=r}return ul.join(__dirname,"../std")}var bT,ul,Vr,ua=j(()=>{bT=require("fs"),ul=Tn(require("path"));_d();fn();jm();ft();Bu();Ke();Bf();yn();Vr=class{constructor(t){this.modules=new Map;this.dependencies=new Map;this.dependents=new Map;this.allowPartialModule=(t==null?void 0:t.allowPartialModule)??!1,this.stdPath=(t==null?void 0:t.stdPath)??qb(__dirname),this.codeGenratorC=new wu,rp(Lo),p_(Hm)}getRelativePath(t){let n=t.match(/\/std\/(.+)$/);if(n)return`std/${n[1]}`;let r=t.match(/\/tests\/(.+)$/);return r?`tests/${r[1]}`:null}isWorkspaceModule(t){return!t.includes("/extensions/")&&!t.includes("/.vscode/")}findExtensionDuplicates(t){if(!this.isWorkspaceModule(t))return[];let n=this.getRelativePath(t);if(!n)return[];let r=[];for(let[i]of this.modules)i!==t&&!this.isWorkspaceModule(i)&&this.getRelativePath(i)===n&&r.push(i);if(n.startsWith("std/"))for(let[i]of this.modules)!this.isWorkspaceModule(i)&&(i.endsWith("/std/prelude.yo")||i.endsWith("/prelude.yo"))&&!r.includes(i)&&r.push(i);return r}deleteModuleAndDependents(t){let n=this.getDependentModules(t);for(let r of n)Os(r),Ms(r),this.clearDependencies(r),ml(r),this.modules.delete(r);Os(t),Ms(t),this.clearDependencies(t),ml(t),this.modules.delete(t)}addDependency(t,n){this.dependencies.has(t)||this.dependencies.set(t,new Set),this.dependencies.get(t).add(n),this.dependents.has(n)||this.dependents.set(n,new Set),this.dependents.get(n).add(t)}getDependentModules(t){let n=new Set,r=[t];for(;r.length>0;){let i=r.pop(),o=this.dependents.get(i);if(o)for(let a of o)n.has(a)||(n.add(a),r.push(a))}return n}clearDependencies(t){let n=this.dependencies.get(t);if(n)for(let r of n){let i=this.dependents.get(r);i&&i.delete(t)}this.dependencies.delete(t)}resetAllState(){for(let t of this.modules.keys())Os(t),Ms(t),ml(t);this.modules.clear(),this.dependencies.clear(),this.dependents.clear(),Qi(),$o(),fo()}loadModule(t,n,r){if(!t.match(/^file:\/\//))throw new Error(`Invalid file protocol: ${t}. Only file:// is supported for now. `);r&&this.addDependency(r,t);let i=this.modules.get(t);if(i)return{moduleValue:i.moduleValue,moduleError:i.moduleError};let o=this.findExtensionDuplicates(t);for(let c of o)this.deleteModuleAndDependents(c);let a=t,s=new ll({modulePath:t,stdPath:this.stdPath,loadModule:c=>this.loadModule(c,void 0,a),inputString:n,allowPartialModule:this.allowPartialModule}),l=s.getModuleValue(),u=s.getModuleError();return this.modules.set(t,{moduleValue:l,moduleError:u,evaluator:s}),{moduleValue:l,moduleError:u}}deleteModule(t){if(!t.match(/^file:\/\//))throw new Error(`Invalid file protocol: ${t}. Only file:// is supported for now. `);let n=[t];if(this.isWorkspaceModule(t))for(let[i]of this.modules)!this.isWorkspaceModule(i)&&!n.includes(i)&&n.push(i);if(t.endsWith("/std/prelude.yo")||t.endsWith("/prelude.yo"))for(let[i]of this.modules)(i.endsWith("/std/prelude.yo")||i.endsWith("/prelude.yo"))&&i!==t&&!n.includes(i)&&n.push(i);for(let i of n)this.deleteModuleAndDependents(i)}compileModule(t,{emitC:n,debugGc:r,debugParallelism:i,debugAsyncAwait:o,allocator:a,isLibrary:s}={}){let{moduleValue:l,moduleError:u}=this.loadModule(t);if(u)throw u.toString();if(!this.modules.get(t))throw new Error(`Module data not found for ${t}`);this.codeGenratorC.compileModule(t,l,{debugGc:r,debugParallelism:i,debugAsyncAwait:o,allocator:a,isLibrary:s}),n&&console.log(this.codeGenratorC.print())}getGeneratedCode(){return this.codeGenratorC.print()}getExportedFunctionNames(){return this.codeGenratorC.getExportedFunctionNames()}}});var AT={};fc(AT,{extractTests:()=>LT,findTestFiles:()=>Gf,runTests:()=>Wf});function ac(){if(typeof global.gc=="function")global.gc();else if(typeof globalThis<"u"&&typeof globalThis.Bun=="object"){let e=globalThis.Bun;typeof e.gc=="function"&&e.gc(!0)}}function Gf(e){let t=qr.resolve(e);if(!kr.existsSync(t))return console.error(`${Ye.red}Error: Path does not exist: ${t}${Ye.reset}`),[];let n=kr.statSync(t);return n.isFile()?t.endsWith(".yo")?[t]:(console.error(`${Ye.red}Error: File is not a .yo file: ${t}${Ye.reset}`),[]):n.isDirectory()?FT(t):[]}function FT(e){let t=[],n=kr.readdirSync(e,{withFileTypes:!0});for(let r of n){let i=qr.join(e,r.name);r.isDirectory()?["node_modules","vendor",".git","vscode-extension"].includes(r.name)||t.push(...FT(i)):r.isFile()&&r.name.endsWith(".test.yo")&&t.push(i)}return t}function LT(e){let t=[],n=[],r=null;try{Qi(),$o(),Va(),fo(),r=new Vr;let i=`file://${e}`,{moduleError:o}=r.loadModule(i);if(o)throw r=null,new Error(`Error evaluating module: ${o}`);let a=r.modules.get(i);if(!a)return console.error(`${Ye.red}Error: Module not found after loading: ${e}${Ye.reset}`),r=null,{tests:t,nonTestExprs:n};let s=a.evaluator.getProgram();for(let l of s)if(S(l)&&T(l,D.test)){if(l.args.length>=2){let u=l.args[0],c=l.args.length===3,f=c?l.args[1]:void 0,p=c?l.args[2]:l.args[1],_="unnamed_test";u.$&&St(u.$.value)?_=u.$.value.value:H(u)&&u.token.type==="string"&&(_=u.token.value),t.push({name:_,bodyExpr:p,usingExpr:f,filePath:e,lineNumber:u.token.position.row+1})}}else n.push(l);r=null}catch(i){throw r=null,console.error(`${Ye.red}Error parsing ${e}: ${i}${Ye.reset}`),i}return{tests:t,nonTestExprs:n}}function Zb(e,t){let n=e.usingString;return`${t};
11137
11137
 
11138
11138
  // Auto-generated main function for test: ${e.name}
@@ -11162,13 +11162,13 @@ ${Ye.bold}${Ye.cyan}Running Yo Tests${Ye.reset}${o>1?` ${Ye.dim}(${o} workers)${
11162
11162
  `),o>1)return await nC({testFiles:e,cCompiler:r,concurrency:o,verbose:t.verbose,bail:t.bail,testNamePattern:t.testNamePattern,keepGeneratedFiles:t.keepGeneratedFiles,profile:t.profile,startTime:n});let s=[],l=0,u=0,c=!1;for(let p of e){if(c)break;let _=qr.relative(process.cwd(),p);console.log(`${Ye.dim}${_}${Ye.reset}`);let d,g;try{let E=LT(p);d=E.tests,g=E.nonTestExprs}catch(E){console.log(` ${Ye.red}\u2717${Ye.reset} Module evaluation failed`);let $=E instanceof Error?E.message:String(E);console.log(` ${Ye.red}${$}${Ye.reset}`),console.log(),s.push({testName:"Module evaluation",filePath:p,passed:!1,errorMessage:$,duration:0}),u++;continue}if(a&&(d=d.filter(E=>a.test(E.name))),d.length===0){console.log(` ${Ye.yellow}(no tests found)${Ye.reset}`),console.log(),ac();continue}let y=g.map(E=>{var $;return L((($=E.$)==null?void 0:$.originalExpr)??E)}).join(`;
11163
11163
  `),h=d.map(E=>{var $,C;return{test:{name:E.name,bodyString:L((($=E.bodyExpr.$)==null?void 0:$.originalExpr)??E.bodyExpr),usingString:E.usingExpr?L(((C=E.usingExpr.$)==null?void 0:C.originalExpr)??E.usingExpr):"",filePath:E.filePath},nonTestContent:y}});d=[],g=[],ac();let v=await rC(h,r,{verbose:t.verbose,bail:t.bail,keepGeneratedFiles:t.keepGeneratedFiles,profile:t.profile});s.push(...v.results),l+=v.passedTests,u+=v.failedTests,c=v.bailed,c&&console.log(`
11164
11164
  ${Ye.yellow}Bailing out early due to test failure (--bail)${Ye.reset}
11165
- `),console.log(),ac()}let f=Date.now()-n;return console.log(`${Ye.bold}Test Summary${Ye.reset}`),console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),l>0&&console.log(`${Ye.green}${l} passed${Ye.reset}`),u>0&&console.log(`${Ye.red}${u} failed${Ye.reset}`),console.log(`${Ye.dim}${l+u} total (${f}ms)${Ye.reset}`),console.log(),{totalTests:l+u,passed:l,failed:u,results:s,duration:f}}var as,kr,wT,qr,Ye,kT,Yf=j(()=>{as=require("node:child_process"),kr=Tn(require("node:fs")),wT=Tn(require("node:os")),qr=Tn(require("node:path"));fs();ft();xe();Bf();ce();ua();pn();dt();yn();ge();Ye={reset:"\x1B[0m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",bold:"\x1B[1m",dim:"\x1B[2m"},kT="__YO_TEST_SUMMARY__"});var zT={};fc(zT,{runFetch:()=>wC});async function wC(e){let{buildFile:t,verbose:n,update:r}=e,i=process.env.YO_ORIGINAL_CWD??process.cwd(),o=Vo.resolve(i,t);$i.existsSync(o)||(console.error(`Error: Build file not found: ${o}`),console.error("Run 'yo init' to create a project with a build.yo file."),process.exit(1));let a=Vo.dirname(o);n&&console.log(`Evaluating ${t}...`),Io();let s=`file://${$i.realpathSync(o)}`;try{let f=new Vr;f.loadModule(s),f.resetAllState()}catch{}let u=ri().dependencies;if(u.length===0){console.log("No dependencies declared in build.yo.");return}console.log(`Found ${u.length} dependency(ies) in ${t}:`);for(let f of u)console.log(` - ${f.name} (${f.url} @ ${f.ref})`);console.log(),r&&console.log(`Updating: re-resolving all git refs to latest commits...
11165
+ `),console.log(),ac()}let f=Date.now()-n;return console.log(`${Ye.bold}Test Summary${Ye.reset}`),console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),l>0&&console.log(`${Ye.green}${l} passed${Ye.reset}`),u>0&&console.log(`${Ye.red}${u} failed${Ye.reset}`),console.log(`${Ye.dim}${l+u} total (${f}ms)${Ye.reset}`),console.log(),{totalTests:l+u,passed:l,failed:u,results:s,duration:f}}var as,kr,wT,qr,Ye,kT,Yf=j(()=>{as=require("node:child_process"),kr=Tn(require("node:fs")),wT=Tn(require("node:os")),qr=Tn(require("node:path"));fs();ft();xe();Bf();ce();ua();pn();dt();yn();ge();Ye={reset:"\x1B[0m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",bold:"\x1B[1m",dim:"\x1B[2m"},kT="__YO_TEST_SUMMARY__"});var zT={};fc(zT,{runFetch:()=>wC});async function wC(e){let{buildFile:t,verbose:n,update:r}=e,i=process.env.YO_ORIGINAL_CWD??process.cwd(),o=Vo.resolve(i,t);bi.existsSync(o)||(console.error(`Error: Build file not found: ${o}`),console.error("Run 'yo init' to create a project with a build.yo file."),process.exit(1));let a=Vo.dirname(o);n&&console.log(`Evaluating ${t}...`),Io();let s=`file://${bi.realpathSync(o)}`;try{let f=new Vr;f.loadModule(s),f.resetAllState()}catch{}let u=ri().dependencies;if(u.length===0){console.log("No dependencies declared in build.yo.");return}console.log(`Found ${u.length} dependency(ies) in ${t}:`);for(let f of u)console.log(` - ${f.name} (${f.url} @ ${f.ref})`);console.log(),r&&console.log(`Updating: re-resolving all git refs to latest commits...
11166
11166
  `);let c=sa(a,u,n,r);console.log(`
11167
11167
  Resolved dependencies:`);for(let[f,p]of c.resolvedPaths)console.log(` ${f} \u2192 ${Vo.relative(a,p)}`);FC(a),console.log(`
11168
- Done. Lock file updated: yo.lock`)}function FC(e){let t=Vo.join(e,".gitignore"),n=".yo-cache/";if($i.existsSync(t)){if($i.readFileSync(t,"utf-8").includes(n))return;$i.appendFileSync(t,`
11168
+ Done. Lock file updated: yo.lock`)}function FC(e){let t=Vo.join(e,".gitignore"),n=".yo-cache/";if(bi.existsSync(t)){if(bi.readFileSync(t,"utf-8").includes(n))return;bi.appendFileSync(t,`
11169
11169
  ${n}
11170
- `)}else $i.writeFileSync(t,`${n}
11171
- `)}var $i,Vo,BT=j(()=>{$i=Tn(require("fs")),Vo=Tn(require("path"));aa();sl();ua()});var WT={};fc(WT,{runInstall:()=>DC});function LC(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("/")||e==="."}function AC(e){if(LC(e))return{kind:"path",name:di.basename(di.resolve(e)),path:e};let t=e,n,r=e.lastIndexOf("@");r>0&&(t=e.slice(0,r),n=e.slice(r+1));let i;if(t.startsWith("https://")||t.startsWith("http://"))i=t,i.endsWith(".git")||(i+=".git");else if(t.startsWith("github.com/"))i=`https://${t}.git`;else if(t.split("/").length===2)i=`https://github.com/${t}.git`;else throw new Error(`Invalid package specifier: "${e}". Expected format: github.com/user/repo, user/repo, ./path, or https://... URL`);let o=i.replace(/\.git$/,"");return{kind:"git",name:di.basename(o),url:i,pinnedRef:n}}function IC(e){try{(0,lc.execSync)(`git ls-remote --exit-code "${e}" HEAD`,{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0"}})}catch{throw new Error(`Repository not found or not accessible: ${e}`)}}function SC(e,t){IC(e);let n=(0,lc.execSync)(`git ls-remote --tags "${e}"`,{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0"}}).trim();if(n){let r=/^v?(\d+)\.(\d+)\.(\d+)$/,i=[];for(let o of n.split(`
11170
+ `)}else bi.writeFileSync(t,`${n}
11171
+ `)}var bi,Vo,BT=j(()=>{bi=Tn(require("fs")),Vo=Tn(require("path"));aa();sl();ua()});var WT={};fc(WT,{runInstall:()=>DC});function LC(e){return e.startsWith("./")||e.startsWith("../")||e.startsWith("/")||e==="."}function AC(e){if(LC(e))return{kind:"path",name:di.basename(di.resolve(e)),path:e};let t=e,n,r=e.lastIndexOf("@");r>0&&(t=e.slice(0,r),n=e.slice(r+1));let i;if(t.startsWith("https://")||t.startsWith("http://"))i=t,i.endsWith(".git")||(i+=".git");else if(t.startsWith("github.com/"))i=`https://${t}.git`;else if(t.split("/").length===2)i=`https://github.com/${t}.git`;else throw new Error(`Invalid package specifier: "${e}". Expected format: github.com/user/repo, user/repo, ./path, or https://... URL`);let o=i.replace(/\.git$/,"");return{kind:"git",name:di.basename(o),url:i,pinnedRef:n}}function IC(e){try{(0,lc.execSync)(`git ls-remote --exit-code "${e}" HEAD`,{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0"}})}catch{throw new Error(`Repository not found or not accessible: ${e}`)}}function SC(e,t){IC(e);let n=(0,lc.execSync)(`git ls-remote --tags "${e}"`,{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0"}}).trim();if(n){let r=/^v?(\d+)\.(\d+)\.(\d+)$/,i=[];for(let o of n.split(`
11172
11172
  `)){let a=o.split(" ");if(a.length<2)continue;let s=a[1].trim();if(s.endsWith("^{}"))continue;let l=s.replace("refs/tags/",""),u=r.exec(l);u&&i.push({tag:l,major:parseInt(u[1],10),minor:parseInt(u[2],10),patch:parseInt(u[3],10)})}if(i.length>0){i.sort((a,s)=>a.major!==s.major?s.major-a.major:a.minor!==s.minor?s.minor-a.minor:s.patch-a.patch);let o=i[0].tag;return t&&console.log(` Found ${i.length} semver tag(s), latest: ${o}`),o}}return t&&console.log(" No semver tags found, resolving default branch..."),NC(e)}function NC(e){try{let t=(0,lc.execSync)(`git ls-remote --symref "${e}" HEAD`,{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0"}}).trim(),n=/ref: refs\/heads\/(\S+)\tHEAD/.exec(t);if(n!=null&&n[1])return n[1]}catch{}return"main"}function xC(e,t){let n=VC(t),r=new RegExp(`build\\.dependency\\(\\{[^}]*name:\\s*"${n}"`,"s"),i=new RegExp(`build\\.path_dependency\\(\\{[^}]*name:\\s*"${n}"`,"s");return r.test(e)||i.test(e)}function VC(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function GT(e,t,n){let r=ao.readFileSync(e,"utf-8");if(xC(r,t.name))return console.log(`Dependency "${t.name}" already exists in ${di.basename(e)}. Update it manually if needed.`),!1;let i;return t.kind==="path"?i=`
11173
11173
  // Added by yo install
11174
11174
  build.path_dependency({ name: "${t.name}", path: "${t.path}" });
@@ -11178,7 +11178,7 @@ build.dependency({ name: "${t.name}", url: "${t.url}", ref: "${n}" });
11178
11178
  `,r.endsWith(`
11179
11179
  `)||(r+=`
11180
11180
  `),r+=i,ao.writeFileSync(e,r,"utf-8"),t.kind==="path"?console.log(`Added path dependency "${t.name}" (${t.path}) to ${di.basename(e)}`):console.log(`Added dependency "${t.name}" @ ${n} to ${di.basename(e)}`),!0}async function DC(e){let{package:t,buildFile:n,verbose:r}=e,i=AC(t),o=process.env.YO_ORIGINAL_CWD??process.cwd(),a=di.resolve(o,n);if(ao.existsSync(a)||(console.error(`Error: Build file not found: ${a}`),console.error("Run 'yo init' to create a project with a build.yo file."),process.exit(1)),i.kind==="path"){let _=di.resolve(o,i.path);ao.existsSync(_)||(console.error(`Error: Path does not exist: ${_}`),process.exit(1)),r&&(console.log(`Package: ${i.name} (local path)`),console.log(`Path: ${i.path}`)),console.log(`Installing local dependency "${i.name}" from ${i.path}...`),GT(a,i),console.log("Done.");return}r&&(console.log(`Package: ${i.name}`),console.log(`URL: ${i.url}`),i.pinnedRef&&console.log(`Pinned ref: ${i.pinnedRef}`));let s;if(i.pinnedRef)s=i.pinnedRef,console.log(`Installing ${i.name} @ ${s} ...`);else{console.log(`Resolving latest version for ${i.name}...`);try{s=SC(i.url,r)}catch(_){console.error(`Error: Could not resolve package "${t}".`),console.error(`Ensure the repository exists and is accessible: ${i.url}`),r&&_ instanceof Error&&console.error(`Details: ${_.message}`),process.exit(1)}console.log(`Installing ${i.name} @ ${s} ...`)}if(!GT(a,i,s))return;let u=di.dirname(a);Io();let c=`file://${ao.realpathSync(a)}`;try{let _=new Vr;_.loadModule(c),_.resetAllState()}catch{}let p=ri().dependencies;p.length>0&&(console.log(`
11181
- Fetching dependencies...`),sa(u,p,r),console.log("Done. Lock file updated: yo.lock"))}var ao,di,lc,YT=j(()=>{ao=Tn(require("fs")),di=Tn(require("path")),lc=require("child_process");aa();sl();ua()});var so=Tn(require("fs")),qT=Tn(require("path")),HT=Tn(require("yargs")),jT=require("yargs/helpers");var pc={name:"@shd101wyy/yo",displayName:"Yo",version:"0.0.27",main:"./out/cjs/index.cjs",module:"./out/esm/index.mjs",types:"./out/types/src/index.d.ts",bin:{yo:"./out/cjs/yo-cli.cjs","yo-cli":"./out/cjs/yo-cli.cjs"},files:["out","scripts","vendor","std"],repository:"https://github.com/shd101wyy/yo",author:"Yiyi Wang <shd101wyy@gmail.com>",license:"NCSA",keywords:["yo","language","compiler","vscode-extension"],scripts:{"build:esbuild":"bun run build.js","build:typings":"tsc --project . --declaration",build:"bun run build:esbuild && bun run build:typings",dev:"bun run build.js --watch",lint:"eslint .",format:'prettier --write "**/*.*"',test:"jest","test:watch":"jest --watch","test:coverage":"jest --coverage",postinstall:"node scripts/check-liburing.js",prepare:"husky"},"lint-staged":{"*.{js,jsx,ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml,css,html}":["prettier --write"]},dependencies:{yargs:"^17.7.2"},devDependencies:{"@types/bun":"^1.3.8","@types/jest":"^29.5.11","@types/node":"^20.10.5","@types/yargs":"^17.0.32","@typescript-eslint/eslint-plugin":"^6.8.0","@typescript-eslint/parser":"^6.8.0",esbuild:"^0.20.0","esbuild-plugin-polyfill-node":"^0.3.0",eslint:"^8.52.0","eslint-plugin-import":"^2.32.0",glob:"^11.0.3",husky:"^9.1.7",jest:"^29.7.0","lint-staged":"^16.2.7",prettier:"^3.0.3","prettier-plugin-packagejson":"^2.4.6","ts-jest":"^29.1.1",typescript:"^5.8.3"}};var tr=Tn(require("fs")),Cn=Tn(require("path")),sc=require("crypto"),NT=require("child_process");var ic=require("child_process"),xo=Tn(require("fs")),cl=Tn(require("path"));fs();ua();Hu();Je();var ca=class{constructor(){this.moduleManager=new Vr}compileModule(t,n){let r=n.targetTriple?qu(n.targetTriple):pi();th(r),pp(r.pointerSizeBits);let i=!!(n.staticLibrary||n.shared);if(n.skipCodegen){let o=this.moduleManager.loadModule(t);if(o.moduleError)throw o.moduleError}else{this.moduleManager.compileModule(t,{emitC:n.emitC,debugGc:n.debugGc,debugParallelism:n.debugParallelism,debugAsyncAwait:n.debugAsyncAwait,allocator:n.allocator??"mimalloc",isLibrary:i});let o=this.moduleManager.getGeneratedCode();if(i){let l=this.moduleManager.getExportedFunctionNames();o=Hb(o,l)}let a=n.output,s=a+".c";if(xo.writeFileSync(s,o),console.log(`Generated C code written to ${s}`),n.skipCCompiler)console.log("Skipping C compiler (--skip-c-compiler flag set)");else{let l=n.cCompiler;l==="zig"&&(l="zig");let u=l==="cl";if(n.staticLibrary){let C=a+".o",w=u?["/std:c11","/c",s,`/Fo${C}`]:[...l==="zig"?["cc"]:[],"-std=c11","-c","-fPIC","-w",s,"-o",C];n.release&&w.splice(u?1:l==="zig"?2:1,0,u?"/O2":"-O2");let k=pi();if(!u&&r.triple!==k.triple){let V=wf(r);w.splice(-2,0,`--target=${V}`),n.sysroot&&w.splice(-2,0,`--sysroot=${n.sysroot}`)}console.log(`Compiling to object: ${l} ${w.join(" ")}`);let b=(0,ic.spawnSync)(l,w,{stdio:"inherit"});(b.error||b.status!==0)&&(console.error("Object compilation failed"),process.exit(b.status||1));let A=a.endsWith(".a")?a:`${a}.a`,I=u?"lib":"ar",N=u?[`/OUT:${A}`,C]:["rcs",A,C];console.log(`Creating archive: ${I} ${N.join(" ")}`);let M=(0,ic.spawnSync)(I,N,{stdio:"inherit"});(M.error||M.status!==0)&&(console.error("Archive creation failed"),process.exit(M.status||1)),xo.existsSync(C)&&xo.unlinkSync(C),console.log(`Successfully created static library ${A}`);return}let c;if(n.optimize!==void 0){let C=n.optimize;C==="0"?c=u?["/Od","/W4"]:["-Wall","-Wextra","-O0"]:c=u?["/w",`/O${C}`]:["-w",`-O${C}`]}else n.release?c=u?["/w","/O2"]:["-w","-O2"]:c=u?["/Od","/W4"]:["-Wall","-Wextra","-O0"];let f=u?["/std:c11",...c,s,`/Fe${a}`]:[...n.cCompiler==="zig"?["cc"]:[],"-std=c11",...c,s,"-o",a];if(n.debugSymbols&&(u?f.splice(-1,0,"/Zi"):f.splice(-2,0,"-g"),console.log("Debug symbols enabled")),n.strip&&(n.debugSymbols&&console.warn("Warning: --strip and -g conflict; debug symbols will be stripped"),u?console.warn("Symbol stripping (-s) is not supported with MSVC"):(f.splice(-2,0,"-s"),console.log("Symbol stripping enabled"))),n.static&&(u?(f.splice(-1,0,"/MT"),console.log("Static linking enabled")):(f.splice(-2,0,"-static"),console.log("Static linking enabled"))),n.shared&&(u?(f.splice(-1,0,"/LD"),console.log("Shared library mode enabled (DLL)")):(f.splice(-2,0,"-shared","-fPIC"),console.log("Shared library mode enabled"))),n.sanitize){let C=fl(l),w=pl({sanitize:n.sanitize,compilerInfo:C});if(w.warning&&console.warn(w.warning),w.flags.length>0){for(let k of w.flags)f.splice(u?-1:-2,0,k);w.info&&console.log(w.info)}}n.extern.forEach(C=>{xo.existsSync(C)?f.splice(u?-1:-2,0,C):console.warn(`External file ${C} does not exist and will be ignored`)}),(n.includePaths??[]).forEach(C=>{let w=u?`/I${C}`:`-I${C}`;f.splice(u?-1:-2,0,w)}),(n.defines??[]).forEach(C=>{let w=u?`/D${C}`:`-D${C}`;f.splice(u?-1:-2,0,w)}),(n.libraryPaths??[]).forEach(C=>{u?f.splice(-1,0,`/LIBPATH:${C}`):f.splice(-2,0,`-L${C}`)});let y=[...n.libraries??[]],h=nh(r);if(h||(Lf(r)&&!y.includes("ws2_32")&&y.push("ws2_32"),Lf(r)&&!y.includes("bcrypt")&&y.push("bcrypt")),y.forEach(C=>{u?f.splice(-1,0,`${C}.lib`):f.splice(-2,0,`-l${C}`)}),(h?"libc":n.allocator??"mimalloc")==="mimalloc"){let C=this.moduleManager.stdPath,w=cl.default.join(cl.default.dirname(C),"vendor"),k=cl.default.join(w,"mimalloc/src/static.c"),b=cl.default.join(w,"mimalloc/include");if(xo.existsSync(k)){f.splice(u?-1:-2,0,k);let A=u?`/I${b}`:`-I${b}`;f.splice(u?-1:-2,0,A),console.log("Using bundled mimalloc")}else console.warn("Bundled mimalloc not found, falling back to standard malloc")}else console.log("Using libc allocator");!h&&!u&&Af(r)&&_l()?(f.splice(-2,0,"-luring"),console.log("Using system liburing for async I/O")):Af(r)&&!u&&console.warn("\u26A0\uFE0F liburing not found - async I/O will not be available. Run 'npm run postinstall' for installation instructions."),n.cflags&&(n.cflags.trim().split(/\s+/).forEach(w=>{f.splice(u?-1:-2,0,w)}),console.log(`Custom compiler flags added: ${n.cflags}`));let E=pi();if(!u&&r.triple!==E.triple){let C=wf(r);f.splice(u?-1:-2,0,`--target=${C}`),console.log(`Cross-compiling for target: ${C}`),n.sysroot&&f.splice(-2,0,`--sysroot=${n.sysroot}`)}console.log(`Compiling with: ${l} ${f.join(" ")}`);let $=(0,ic.spawnSync)(l,f,{stdio:"inherit"});$.error?(console.error(`Compilation failed: ${$.error.message}`),process.exit(1)):$.status===0?console.log(`Successfully compiled to ${a}`):(console.error(`Compilation failed with exit code ${$.status}`),process.exit($.status||1))}}}};function Hb(e,t){let n=e.split(`
11181
+ Fetching dependencies...`),sa(u,p,r),console.log("Done. Lock file updated: yo.lock"))}var ao,di,lc,YT=j(()=>{ao=Tn(require("fs")),di=Tn(require("path")),lc=require("child_process");aa();sl();ua()});var so=Tn(require("fs")),qT=Tn(require("path")),HT=Tn(require("yargs")),jT=require("yargs/helpers");var pc={name:"@shd101wyy/yo",displayName:"Yo",version:"0.0.28",main:"./out/cjs/index.cjs",module:"./out/esm/index.mjs",types:"./out/types/src/index.d.ts",bin:{yo:"./out/cjs/yo-cli.cjs","yo-cli":"./out/cjs/yo-cli.cjs"},files:["out","scripts","vendor","std"],repository:"https://github.com/shd101wyy/yo",author:"Yiyi Wang <shd101wyy@gmail.com>",license:"NCSA",keywords:["yo","language","compiler","vscode-extension"],scripts:{"build:esbuild":"bun run build.js","build:typings":"tsc --project . --declaration",build:"bun run build:esbuild && bun run build:typings",dev:"bun run build.js --watch",lint:"eslint .",format:'prettier --write "**/*.*"',test:"jest","test:watch":"jest --watch","test:coverage":"jest --coverage",postinstall:"node scripts/check-liburing.js",prepare:"husky"},"lint-staged":{"*.{js,jsx,ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml,css,html}":["prettier --write"]},dependencies:{yargs:"^17.7.2"},devDependencies:{"@types/bun":"^1.3.8","@types/jest":"^29.5.11","@types/node":"^20.10.5","@types/yargs":"^17.0.32","@typescript-eslint/eslint-plugin":"^6.8.0","@typescript-eslint/parser":"^6.8.0",esbuild:"^0.20.0","esbuild-plugin-polyfill-node":"^0.3.0",eslint:"^8.52.0","eslint-plugin-import":"^2.32.0",glob:"^11.0.3",husky:"^9.1.7",jest:"^29.7.0","lint-staged":"^16.2.7",prettier:"^3.0.3","prettier-plugin-packagejson":"^2.4.6","ts-jest":"^29.1.1",typescript:"^5.8.3"}};var tr=Tn(require("fs")),Cn=Tn(require("path")),sc=require("crypto"),NT=require("child_process");var ic=require("child_process"),xo=Tn(require("fs")),cl=Tn(require("path"));fs();ua();Hu();Je();var ca=class{constructor(){this.moduleManager=new Vr}compileModule(t,n){let r=n.targetTriple?qu(n.targetTriple):pi();th(r),pp(r.pointerSizeBits);let i=!!(n.staticLibrary||n.shared);if(n.skipCodegen){let o=this.moduleManager.loadModule(t);if(o.moduleError)throw o.moduleError}else{this.moduleManager.compileModule(t,{emitC:n.emitC,debugGc:n.debugGc,debugParallelism:n.debugParallelism,debugAsyncAwait:n.debugAsyncAwait,allocator:n.allocator??"mimalloc",isLibrary:i});let o=this.moduleManager.getGeneratedCode();if(i){let l=this.moduleManager.getExportedFunctionNames();o=Hb(o,l)}let a=n.output,s=a+".c";if(xo.writeFileSync(s,o),console.log(`Generated C code written to ${s}`),n.skipCCompiler)console.log("Skipping C compiler (--skip-c-compiler flag set)");else{let l=n.cCompiler;l==="zig"&&(l="zig");let u=l==="cl";if(n.staticLibrary){let C=a+".o",w=u?["/std:c11","/c",s,`/Fo${C}`]:[...l==="zig"?["cc"]:[],"-std=c11","-c","-fPIC","-w",s,"-o",C];n.release&&w.splice(u?1:l==="zig"?2:1,0,u?"/O2":"-O2");let k=pi();if(!u&&r.triple!==k.triple){let V=wf(r);w.splice(-2,0,`--target=${V}`),n.sysroot&&w.splice(-2,0,`--sysroot=${n.sysroot}`)}console.log(`Compiling to object: ${l} ${w.join(" ")}`);let b=(0,ic.spawnSync)(l,w,{stdio:"inherit"});(b.error||b.status!==0)&&(console.error("Object compilation failed"),process.exit(b.status||1));let A=a.endsWith(".a")?a:`${a}.a`,I=u?"lib":"ar",N=u?[`/OUT:${A}`,C]:["rcs",A,C];console.log(`Creating archive: ${I} ${N.join(" ")}`);let M=(0,ic.spawnSync)(I,N,{stdio:"inherit"});(M.error||M.status!==0)&&(console.error("Archive creation failed"),process.exit(M.status||1)),xo.existsSync(C)&&xo.unlinkSync(C),console.log(`Successfully created static library ${A}`);return}let c;if(n.optimize!==void 0){let C=n.optimize;C==="0"?c=u?["/Od","/W4"]:["-Wall","-Wextra","-O0"]:c=u?["/w",`/O${C}`]:["-w",`-O${C}`]}else n.release?c=u?["/w","/O2"]:["-w","-O2"]:c=u?["/Od","/W4"]:["-Wall","-Wextra","-O0"];let f=u?["/std:c11",...c,s,`/Fe${a}`]:[...n.cCompiler==="zig"?["cc"]:[],"-std=c11",...c,s,"-o",a];if(n.debugSymbols&&(u?f.splice(-1,0,"/Zi"):f.splice(-2,0,"-g"),console.log("Debug symbols enabled")),n.strip&&(n.debugSymbols&&console.warn("Warning: --strip and -g conflict; debug symbols will be stripped"),u?console.warn("Symbol stripping (-s) is not supported with MSVC"):(f.splice(-2,0,"-s"),console.log("Symbol stripping enabled"))),n.static&&(u?(f.splice(-1,0,"/MT"),console.log("Static linking enabled")):(f.splice(-2,0,"-static"),console.log("Static linking enabled"))),n.shared&&(u?(f.splice(-1,0,"/LD"),console.log("Shared library mode enabled (DLL)")):(f.splice(-2,0,"-shared","-fPIC"),console.log("Shared library mode enabled"))),n.sanitize){let C=fl(l),w=pl({sanitize:n.sanitize,compilerInfo:C});if(w.warning&&console.warn(w.warning),w.flags.length>0){for(let k of w.flags)f.splice(u?-1:-2,0,k);w.info&&console.log(w.info)}}n.extern.forEach(C=>{xo.existsSync(C)?f.splice(u?-1:-2,0,C):console.warn(`External file ${C} does not exist and will be ignored`)}),(n.includePaths??[]).forEach(C=>{let w=u?`/I${C}`:`-I${C}`;f.splice(u?-1:-2,0,w)}),(n.defines??[]).forEach(C=>{let w=u?`/D${C}`:`-D${C}`;f.splice(u?-1:-2,0,w)}),(n.libraryPaths??[]).forEach(C=>{u?f.splice(-1,0,`/LIBPATH:${C}`):f.splice(-2,0,`-L${C}`)});let y=[...n.libraries??[]],h=nh(r);if(h||(Lf(r)&&!y.includes("ws2_32")&&y.push("ws2_32"),Lf(r)&&!y.includes("bcrypt")&&y.push("bcrypt")),y.forEach(C=>{u?f.splice(-1,0,`${C}.lib`):f.splice(-2,0,`-l${C}`)}),(h?"libc":n.allocator??"mimalloc")==="mimalloc"){let C=this.moduleManager.stdPath,w=cl.default.join(cl.default.dirname(C),"vendor"),k=cl.default.join(w,"mimalloc/src/static.c"),b=cl.default.join(w,"mimalloc/include");if(xo.existsSync(k)){f.splice(u?-1:-2,0,k);let A=u?`/I${b}`:`-I${b}`;f.splice(u?-1:-2,0,A),console.log("Using bundled mimalloc")}else console.warn("Bundled mimalloc not found, falling back to standard malloc")}else console.log("Using libc allocator");!h&&!u&&Af(r)&&_l()?(f.splice(-2,0,"-luring"),console.log("Using system liburing for async I/O")):Af(r)&&!u&&console.warn("\u26A0\uFE0F liburing not found - async I/O will not be available. Run 'npm run postinstall' for installation instructions."),n.cflags&&(n.cflags.trim().split(/\s+/).forEach(w=>{f.splice(u?-1:-2,0,w)}),console.log(`Custom compiler flags added: ${n.cflags}`));let E=pi();if(!u&&r.triple!==E.triple){let C=wf(r);f.splice(u?-1:-2,0,`--target=${C}`),console.log(`Cross-compiling for target: ${C}`),n.sysroot&&f.splice(-2,0,`--sysroot=${n.sysroot}`)}console.log(`Compiling with: ${l} ${f.join(" ")}`);let $=(0,ic.spawnSync)(l,f,{stdio:"inherit"});$.error?(console.error(`Compilation failed: ${$.error.message}`),process.exit(1)):$.status===0?console.log(`Successfully compiled to ${a}`):(console.error(`Compilation failed with exit code ${$.status}`),process.exit($.status||1))}}}};function Hb(e,t){let n=e.split(`
11182
11182
  `),r=[],i=/^([a-zA-Z_][a-zA-Z0-9_*\s]*?)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*\(/;for(let o=0;o<n.length;o++){let a=n[o],s=a.trimStart();if(s.startsWith("static ")||s.startsWith("static ")||s.startsWith("inline ")||s.startsWith("extern ")||s.startsWith("typedef ")||s.startsWith("#")||s.startsWith("//")||s.startsWith("/*")||s.startsWith("*")||s===""||s==="}"||s==="{"||s.startsWith("struct ")||s.startsWith("union ")||s.startsWith("enum ")){r.push(a);continue}let l=["return","if","else","while","for","do","switch","case","break","continue","goto","default","sizeof","typeof"],u=s.split(/[\s(]/)[0]??"";if(l.includes(u)){r.push(a);continue}if(a.startsWith(" ")||a.startsWith(" ")){r.push(a);continue}let c=i.exec(s);if(c){let f=c[2];if(t.has(f)){r.push(a);continue}if(f==="main"){r.push(a);continue}r.push("static "+a);continue}r.push(a)}return r.join(`
11183
11183
  `)}fs();ft();aa();Zi();sl();ua();yn();dt();var oc=require("child_process");function jb(){try{return(0,oc.execSync)("pkg-config --version",{encoding:"utf-8",timeout:5e3,stdio:"pipe"}),!0}catch{return!1}}function Kb(e){try{let t=(0,oc.execSync)(`pkg-config --cflags "${e}"`,{encoding:"utf-8",timeout:1e4,stdio:"pipe"}).trim(),n=(0,oc.execSync)(`pkg-config --libs "${e}"`,{encoding:"utf-8",timeout:1e4,stdio:"pipe"}).trim(),r={cFlags:[],ldFlags:[],includePaths:[],libraryPaths:[],linkLibraries:[]};for(let i of t.split(/\s+/).filter(Boolean))i.startsWith("-I")?r.includePaths.push(i.slice(2)):r.cFlags.push(i);for(let i of n.split(/\s+/).filter(Boolean))i.startsWith("-L")?r.libraryPaths.push(i.slice(2)):i.startsWith("-l")?r.linkLibraries.push(i.slice(2)):r.ldFlags.push(i);return r}catch{return}}function Xb(e){let t={cFlags:[],ldFlags:[],includePaths:[],libraryPaths:[],linkLibraries:[]};if(e.fallbackInclude&&t.includePaths.push(e.fallbackInclude),e.fallbackLib&&t.libraryPaths.push(e.fallbackLib),e.fallbackLink)for(let n of e.fallbackLink.split(/\s+/).filter(Boolean))t.linkLibraries.push(n);return t}function Qb(e,t=!1){if(jb()){let n=Kb(e.pkgConfig);if(n)return t&&console.log(` ${e.name}: found via pkg-config (${e.pkgConfig})`),n;t&&console.log(` ${e.name}: pkg-config query failed for "${e.pkgConfig}", using fallback`)}else t&&console.log(` ${e.name}: pkg-config not available, using fallback`);return Xb(e)}function CT(e,t=!1){let n={cFlags:[],ldFlags:[],includePaths:[],libraryPaths:[],linkLibraries:[]};if(e.length===0)return n;t&&console.log(`Resolving ${e.length} system library(ies)...`);for(let r of e){let i=Qb(r,t);n.cFlags.push(...i.cFlags),n.ldFlags.push(...i.ldFlags),n.includePaths.push(...i.includePaths),n.libraryPaths.push(...i.libraryPaths),n.linkLibraries.push(...i.linkLibraries)}return n}async function xT(e){let t=process.env.YO_ORIGINAL_CWD??process.cwd(),n=Cn.resolve(t,e.buildFile);tr.existsSync(n)||(console.error(`Error: Build file not found: ${n}
11184
11184
  Run 'yo init' to create a new project with a build.yo file.`),process.exit(1));let r=new Map;if(e.defines)for(let[l,u]of Object.entries(e.defines))r.set(l,u);let i=iC(n,r);if(e.listSteps){oC(i);return}let o=e.steps&&e.steps.length>0?e.steps:["install"],a=e.cCompiler;if(!a){let l=cs();l||(console.error("Error: No C compiler found. Please install clang, gcc, or another C compiler."),process.exit(1)),a=l}let s=Cn.dirname(n);if(lh(s),i.dependencies.length>0&&(Kv(s,i.dependencies)?e.verbose&&console.log("All dependencies cached."):(e.verbose&&console.log("Dependencies not cached \u2014 fetching..."),sa(s,i.dependencies,e.verbose)),gC(s,i.dependencies,e.verbose)),i.systemLibraries.length>0)for(let l of i.artifacts){if(l.linkedSystemLibraries.length===0)continue;let u=i.systemLibraries.filter(f=>l.linkedSystemLibraries.includes(f.name));if(u.length===0)continue;let c=CT(u,e.verbose);l.includePaths.push(...c.includePaths),l.libraryPaths.push(...c.libraryPaths),l.linkLibraries.push(...c.linkLibraries),l.cFlags.push(...c.cFlags)}i.dependencyArtifacts.length>0&&await dC(i,s,{cCompiler:a,targetTriple:e.targetTriple,sysroot:e.sysroot,verbose:e.verbose});for(let l of o){if(e.dryRun){console.log(`[dry-run] Would execute step: ${l}`);continue}await lC(l,{registry:i,projectDir:s,cCompiler:a,targetTriple:e.targetTriple,sysroot:e.sysroot,verbose:e.verbose,summary:e.summary})}}function iC(e,t){Io(),t&&t.size>0&&ri().setCliOptions(t);let n=`file://${tr.realpathSync(e)}`;try{let r=new Vr;r.loadModule(n),r.resetAllState()}catch(r){let i=r instanceof Error?r.message:String(r);console.error(`Error evaluating ${e}: