@shd101wyy/yo 0.1.13 → 0.1.14
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.
- package/out/cjs/index.cjs +1 -1
- package/out/cjs/yo-cli.cjs +685 -588
- package/out/esm/index.mjs +1 -1
- package/out/types/src/doc/render-html.d.ts +5 -1
- package/out/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/scripts/build-site.ts +37 -0
- package/std/build.yo +8 -4
- package/std/encoding/base64.yo +7 -4
- package/std/encoding/hex.yo +7 -4
- package/std/encoding/html.yo +7 -4
- package/std/encoding/json.yo +9 -6
- package/std/encoding/punycode.yo +9 -6
- package/std/encoding/toml.yo +7 -4
- package/std/encoding/utf16.yo +7 -4
- package/std/fs/dir.yo +16 -13
- package/std/fs/file.yo +19 -16
- package/std/http/client.yo +12 -6
package/out/cjs/index.cjs
CHANGED
|
@@ -194,7 +194,7 @@ Typeof "${a.name}": ${M(a.type)}`})));if(o.length>0)throw Kt(o.map(a=>({token:a.
|
|
|
194
194
|
`)}function A_(e){let t={moduleDoc:null,declarations:[]},n=[],r=null,i="",o=0;for(;o<e.length;){let a=e[o];if(xh(a))if(r===null&&(r=a.position,i=a.modulePath),a.type==="inner_doc_line_comment"){for(n.push(Tu(a.value)),o++;o<e.length&&e[o].type==="whitespace";){if(e[o].value.includes(`
|
|
195
195
|
`)){let s=o+1;for(;s<e.length&&e[s].type==="whitespace";)s++;if(s<e.length&&e[s].type==="inner_doc_line_comment"){o=s;break}else break}o++}continue}else{n.push(L_(a.value)),o++;continue}if(a.type==="doc_line_comment"){let s=[],l=a.position,u=a.modulePath;for(s.push(Tu(a.value)),o++;o<e.length;){let f=o;for(;f<e.length&&e[f].type==="whitespace";)f++;if(f<e.length&&e[f].type==="doc_line_comment")s.push(Tu(e[f].value)),o=f+1;else break}let c={content:s.join(`
|
|
196
196
|
`),inner:!1,position:l,modulePath:u},{name:_,position:p}=I_(e,o);t.declarations.push({comment:c,declarationName:_,declarationPosition:p});continue}if(a.type==="doc_block_comment"){let s={content:L_(a.value),inner:!1,position:a.position,modulePath:a.modulePath};o++;let{name:l,position:u}=I_(e,o);t.declarations.push({comment:s,declarationName:l,declarationPosition:u});continue}o++}return n.length>0&&r!==null&&(t.moduleDoc={content:n.join(`
|
|
197
|
-
`),inner:!0,position:r,modulePath:i}),t}function I_(e,t){let n=t;for(;n<e.length;){let r=e[n];if(Dh(r)||Nh(r)){n++;continue}
|
|
197
|
+
`),inner:!0,position:r,modulePath:i}),t}function I_(e,t){let n=t;for(;n<e.length;){let r=e[n];if(Dh(r)||Nh(r)){n++;continue}if(r.type==="identifier")return{name:r.value,position:r.position};if(r.type==="("){n++;continue}return{name:"",position:null}}return{name:"",position:null}}var Mh=process.env.YO_SKIP_PRELUDE==="1"||process.env.YO_SKIP_PRELUDE==="true";function Oh(e,t){return e.some(n=>(n.type==="single_line_comment"||n.type==="multi_line_comment"||n.type==="doc_line_comment"||n.type==="inner_doc_line_comment"||n.type==="doc_block_comment"||n.type==="inner_doc_block_comment")&&n.value.includes(t))}var Ya=class{constructor({modulePath:t,stdPath:n,loadModule:r,inputString:i,allowPartialModule:o=!1,registerPartialModule:a}){if(this.modulePath=t,this.allowPartialModule=o,this.registerPartialModule=a,!this.modulePath.match(/^file:\/\//))throw new Error(`Invalid file protocol: ${this.modulePath}. Only file:// is supported for now. `);try{if(this.inputString=i??(0,S_.readFileSync)(t.replace(/^file:\/\//,""),"utf-8"),this.parser=new ro({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(s){throw new Error(`Failed to import module "${t}":
|
|
198
198
|
${s instanceof fr||s instanceof Nr?s.toString():s instanceof Error?s.message:String(s)}`)}}getProgram(){return this.program}getTokens(){return this.tokens}evaluateProgram(t,n){var c,_;let r=gu({modulePath:this.modulePath,inputString:this.inputString});if(!Oh(this.tokens,"@skip_prelude")&&!Mh){let p="file://"+V_.default.join(t,"prelude.yo"),{moduleValue:f,moduleError:m}=n(p);if(m)throw m;if(f&&je(f.type)){r=at(r);for(let h=0;h<f.type.fields.length;h++){let y=f.type.fields[h],g=f.fields[h],{env:v}=De({env:r,variable:{name:y.label,type:y.type,value:g?[g]:void 0,isCompileTimeOnly:!0,initializedAtToken:((c=y.exprs.labelExpr)==null?void 0:c.token)??y.exprs.expr.token,consumedAtToken:void 0,token:((_=y.exprs.labelExpr)==null?void 0:_.token)??y.exprs.expr.token,isOwningTheRcValue:!1}});r=v}}C_(r)}let o=A_(this.tokens),a=new Map;for(let p of o.declarations)p.declarationName&&a.set(p.declarationName,p.comment.content);let{moduleValue:s,env:l,partialModuleError:u}=Ms({beginExprs:this.program,env:r,context:{isExecuting:!0,expectedType:void 0,SelfType:void 0,loadModule:n.bind(this),stdPath:t,currentModulePath:this.modulePath,docCommentLookup:a},allowPartialModule:this.allowPartialModule,registerPartialModule:this.registerPartialModule});r=l,this.moduleValue=s,this.moduleError=u}getModuleValue(){if(!this.moduleValue)throw new Error("Module value is not set");return this.moduleValue}getModuleError(){return this.parser.getParserError()??this.moduleError}};function Rh(...e){process.env.NODE_ENV!=="production"&&process.env.DEBUG&&console.log(...e)}var Eg=require("fs"),cs=Rr(require("path"));var R_=Rr(require("fs"));function Ph(e){switch(e){case"x86_64":case"aarch64":return 64;case"x86":case"arm":case"wasm32":return 32}}var N_={darwin:"macos",linux:"linux",win32:"windows",freebsd:"freebsd"},x_={x64:"x86_64",arm64:"aarch64",ia32:"x86",arm:"arm"},qs;function Uh(){if(qs)return qs;let e=N_[process.platform];if(!e)throw new Error(`Unsupported host platform: ${process.platform}. Supported: ${Object.keys(N_).join(", ")}`);let t=x_[process.arch];if(!t)throw new Error(`Unsupported host architecture: ${process.arch}. Supported: ${Object.keys(x_).join(", ")}`);return qs={platform:e,arch:t},qs}function zh(){if(process.platform!=="linux")return"gnu";try{if(R_.readdirSync("/lib").some(n=>n.startsWith("ld-musl-")))return"musl"}catch{}return"gnu"}function P_(e){switch(e){case"linux":return zh();case"windows":return"msvc";case"wasi":case"emscripten":return"wasm";case"macos":case"freebsd":return}}function Bh(e,t,n){return n?`${e}-${t}-${n}`:`${e}-${t}`}function U_(e,t,n){return{arch:e,os:t,abi:n,pointerSizeBits:Ph(e),triple:Bh(e,t,n)}}function Hi(){let e=Uh(),t=P_(e.platform);return U_(e.arch,e.platform,t)}var D_=new Set(["x86_64","aarch64","x86","arm","wasm32"]),M_=new Set(["linux","macos","windows","freebsd","wasi","emscripten"]),O_=new Set(["gnu","musl","msvc","none","wasm"]);function z_(e){let n=(e.startsWith("wasm-")?`wasm32-${e.slice(5)}`:e).split("-");if(n.length<2||n.length>3)throw new Error(`Invalid target triple "${e}". Expected format: <arch>-<os> or <arch>-<os>-<abi>. Example: x86_64-linux-gnu`);let r=n[0],i=n[1],o=n[2];if(!D_.has(r))throw new Error(`Unknown architecture "${r}" in target triple "${e}". Supported: ${[...D_].join(", ")}`);if(!M_.has(i))throw new Error(`Unknown OS "${i}" in target triple "${e}". Supported: ${[...M_].join(", ")}`);let a=r,s=i,l;if(o!==void 0)if(o==="none")l=void 0;else if(O_.has(o))l=o;else throw new Error(`Unknown ABI "${o}" in target triple "${e}". Supported: ${[...O_].join(", ")}`);else l=P_(s);return U_(a,s,l)}var Eu;function Ha(){return Eu||(Eu=Hi()),Eu}function Nn(e){return e.os==="windows"}function $o(e){return e.os==="linux"}function Br(e){return e.os==="macos"}function Gr(e){return e.arch==="wasm32"||e.os==="wasi"||e.os==="emscripten"}function B_(e){return e.os==="wasi"}function G_(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 W_(e){let t=Nn(e.targetInfo);t?(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("#define _DEFAULT_SOURCE"),e.emitter.emitHeaderLine("#define _GNU_SOURCE // Needed for sched_getcpu() on Linux")),e.emitter.emitHeaderLine("");for(let n of e.cIncludes)e.emitter.emitHeaderLine(`#include ${n}`);t?(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("#include <unistd.h>"),e.emitter.emitHeaderLine("#include <sys/stat.h>"),e.emitter.emitHeaderLine("#include <sys/random.h>")),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(" #define __yo_aligned_free mi_free"),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"),t?(e.emitter.emitHeaderLine(" static inline void* __yo_aligned_alloc(size_t alignment, size_t size) { return _aligned_malloc(size, alignment); }"),e.emitter.emitHeaderLine(" #define __yo_aligned_free _aligned_free")):(e.emitter.emitHeaderLine(" #define __yo_aligned_alloc aligned_alloc"),e.emitter.emitHeaderLine(" #define __yo_aligned_free free")),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"),t?(e.emitter.emitHeaderLine(" static inline void* __yo_aligned_alloc(size_t alignment, size_t size) { return _aligned_malloc(size, alignment); }"),e.emitter.emitHeaderLine(" #define __yo_aligned_free _aligned_free")):(e.emitter.emitHeaderLine(" #define __yo_aligned_alloc aligned_alloc"),e.emitter.emitHeaderLine(" #define __yo_aligned_free free")),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"),t?(e.emitter.emitHeaderLine("static inline void* __yo_aligned_alloc(size_t alignment, size_t size) { return _aligned_malloc(size, alignment); }"),e.emitter.emitHeaderLine("#define __yo_aligned_free _aligned_free")):(e.emitter.emitHeaderLine("#define __yo_aligned_alloc aligned_alloc"),e.emitter.emitHeaderLine("#define __yo_aligned_free free"))),e.emitter.emitHeaderLine("")}function Si(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 Vr(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 Co=[...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_slice_ptr,...F.__yo_as,...F.__yo_getrandom,...F.__yo_arc4random_buf,...F.__yo_bcrypt_gen_random,...F.__yo_getentropy,...F.__yo_maybe_uninit_new,...F.__yo_maybe_uninit_as_ptr,...F.__yo_maybe_uninit_assume_init,...F.__yo_array_index,...F.__yo_slice_index,...F.__yo_array_index_range,...F.__yo_array_index_range_inclusive,...F.__yo_slice_index_range,...F.__yo_slice_index_range_inclusive,...F.__yo_noop,...F.__yo_return_self,...F.__yo_ms_sleep],q_=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 $e(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 j(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":for(let u of Object.values(t.types))if(hr(u.type)&&u.type.fields.length===1&&Et(u.type.fields[0].type))return u.cName;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 _=Gn(e);if(_)return j(_,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} ${M(e)}`);return(e.tag==="Struct"||e.tag==="Enum")&&Se(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 ${M(e)}`);return u}case"Array":{let u=e,c=u.childType,_=u.length;if(vt(_)){let p=j(c,t),f=`Array_${$e(p)}_${_.value}`;return t.arrayStructTypes.has(f)||t.arrayStructTypes.set(f,{childType:p,length:typeof _.value=="bigint"?Number(_.value):_.value}),f}break}case"Slice":{let u=e,_=`Slice_${$e(j(u.childType,t))}`;return t.sliceStructTypes.has(_)||t.sliceStructTypes.set(_,{childType:j(u.childType,t)}),_}case"SomeType":{let u=e;if(it(u)){if((i=u.resolvedConcreteType)!=null&&i.isExtern)return`${j(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)&&it(u.resolvedConcreteType)){let p=u.resolvedConcreteType,f=(a=t.types[p.id])==null?void 0:a.cName;if(f)return`${f}*`}if(u.resolvedConcreteType&&Se(u.resolvedConcreteType)){let p=u.resolvedConcreteType.id;for(let[f,m]of Object.entries(t.types))if(z(m.type)&&it(m.type)&&m.type.resolvedConcreteType&&Se(m.type.resolvedConcreteType)&&m.type.resolvedConcreteType.id===p)return`${m.cName}*`}let _=Ln(u);if(_){let p=(s=t.types[_.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: ${(_==null?void 0:_.id)??"none"}. Ensure async blocks are properly analyzed and their state machine types are registered.
|
|
199
199
|
resolvedConcreteType: ${((l=u.resolvedConcreteType)==null?void 0:l.id)??"none"}
|
|
200
200
|
registered type IDs: ${Object.keys(t.types).filter(p=>p.startsWith("sometype")).join(", ")}`)}return zn(u)&&u.resolvedConcreteType||u.resolvedConcreteType?j(u.resolvedConcreteType,t):"void*"}case"Ptr":{let c=e.childType;if(Et(c)){let f=j(c.childType,t),m=`Slice_${$e(f)}`;return t.sliceStructTypes.has(m)||t.sliceStructTypes.set(m,{childType:f}),`${m}*`}let _=j(c,t);return Qt(c)?`${_}*`:ze(c)&&Gn(c)?`${_}*`:`${_}*`}case"Iso":{let u=e,c=u.childType,_=j(c,t),p=_.replace(/\*/g,"").trim(),f=`Iso_${$e(p)}`;return t.isoTypes||(t.isoTypes=new Map),t.isoTypes.has(f)||t.isoTypes.set(f,{childTypeCName:_,isoType:u}),f}case"Arc":{let u=e,c=u.childType,_=j(c,t),p=_.replace(/\*/g,"").trim(),f=`Arc_${$e(p)}`;return t.arcTypes||(t.arcTypes=new Map),t.arcTypes.has(f)||t.arcTypes.set(f,{childTypeCName:_,arcType:u}),f}}return`// Unknown type: ${M(e)}`}function Ht(e,t,n){let r=$e(t);return`${j(e,n)} ${r}`}function Rn(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} (${M(e)})`);return`${r.toUpperCase()}_${t.toUpperCase()}`}function ji(e){return e.type.return.isCompileTimeOnly}function mi(e){let t=e.body,n=null;return A(t)&&E(t,"begin")&&t.args.length===1&&A(t.args[0])&&E(t.args[0],Co)?n=t.args[0].func.token.value:A(t)&&E(t,Co)&&(n=t.func.token.value),n&&F.__yo_as.includes(n)?null:n}function Gn(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(Ye(i)){if(n)return null;n=r}else return null}else return null;return t&&n&&n.fields?n.fields[0].type:null}function Fr(e){for(let t of e.variants)if(t.fields&&t.fields.length>0)return!1;return e.variants.length>0}function Ge(e,t){if(!t)return $e(e);let n=ce(t,e);if(n.length>0){let r=n[n.length-1];return $e(r.name,r.type.isExtern==="c")}return $e(e)}function Ys(e){if(A(e)&&e.args.length>=1){let t=e.args[0];if(t&&K(t))return t.token.value}if(A(e)&&e.args.length===0&&A(e.func)&&E(e.func,".",2)&&K(e.func.args[0])&&K(e.func.args[1])&&e.func.args[1].token.value===F.___dup[0])return e.func.args[0].token.value}function $r(e){if(A(e)&&e.args.length===0&&A(e.func)&&E(e.func,".",2)&&K(e.func.args[1])&&e.func.args[1].token.value===F.___drop[0]&&K(e.func.args[0]))return e.func.args[0].token.value;if(!A(e)||!E(e,F.___drop)||e.args.length<1)return;let t=e.args[0];if(!(!t||!K(t)))return t.token.value}function ja(e){if(e){if(Vn(e))return e;if(A(e)){let t=e;for(let n of t.args){let r=ja(n);if(r)return r}}}}var $u;function Y_(e){$u=e}function q(e,t,n){if(!$u)throw new Error("Internal Error: generateExpr function is not set.");return $u(e,t,n)}function Vi(e,t,n){let r=z(t)&&t.resolvedConcreteType?t.resolvedConcreteType:t;if(!lt(r))return"";if(Ze(r)){let i=r.length;if(!vt(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=Vi(`(${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(lt(s)){let l=Vi(`(${e})._${o}`,a,n);l&&i.emitLine(`${l};`)}}return""}if(ot(r))return`__yo_decr_rc((void*)(${e}).data)`;if(Qt(r))return`__yo_decr_rc((void*)(${e}))`;if(vn(r))return`__yo_decr_rc_atomic((void*)(${e}))`;if(fn(r))return`__yo_decr_rc_atomic((void*)(${e}))`;if(Se(r)||ze(r)){let i=yi(r,n);if(i)return`${i}(${e})`}return""}function oa(e,t,n){let r=z(t)&&t.resolvedConcreteType?t.resolvedConcreteType:t;if(Ze(r)){let i=r.length;if(!vt(i))return"/* Error: array has non-constant length */";let o=`temp_dup_${yt("")}`,a=`i_${yt("")}`,s=j(r,n),l=n.emitter;l.emitLine(`${s} ${o} = ${e};`),l.emitLine(`for (size_t ${a} = 0; ${a} < ${i.value}; ${a}++) {`);let u=oa(`${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_${yt("")}`,a=j(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(lt(u)){let c=oa(`${o}._${s}`,l,n);i.emitLine(`${o}._${s} = ${c};`)}}return o}if(ot(r))return`((${j(r,n)}){ .data = __yo_incr_rc((void*)(${e}).data), .vtable = (${e}).vtable })`;if(Qt(r))return`((${j(r,n)})__yo_incr_rc((void*)(${e})))`;if(vn(r))return`((${j(r,n)})__yo_incr_rc_atomic((void*)(${e})))`;if(fn(r))return`((${j(r,n)})__yo_incr_rc_atomic((void*)(${e})))`;if(Se(r)||ze(r)){let i=Lr(r,n);if(i)return`${i}(${e})`}return e}function yi(e,t){var n;if(Se(e)||ze(e)||ot(e)||z(e)||vn(e)||fn(e)){let r=e.trait.fields.find(i=>i.label===F.___drop[0]);if(r&&r.assignedValue&&ge(r.assignedValue))return(n=t.functions[r.assignedValue.funcId])==null?void 0:n.cName}}function Lr(e,t){var n;if(Se(e)||ze(e)||ot(e)||z(e)||vn(e)||fn(e)){let r=e.trait.fields.find(i=>i.label===F.___dup[0]);if(r&&r.assignedValue&&ge(r.assignedValue))return(n=t.functions[r.assignedValue.funcId])==null?void 0:n.cName}}function _n(e,t,n){var i;let r=n.emitter;if((i=e.$)!=null&&i.deferredDropExpressions)for(let o of e.$.deferredDropExpressions){if(n.shortCircuitHandledDropVarNames){let s=$r(o);if(s&&n.shortCircuitHandledDropVarNames.has(s)){n.shortCircuitHandledDropVarNames.delete(s);continue}}let a=q(o,t,n);a&&r.emitLine(`${t}${a};`)}}function Bt(e,t,n){var i;let r=n.emitter;if((i=e.$)!=null&&i.deferredDupExpressions){for(let o of e.$.deferredDupExpressions)if(A(o)){let a=q(o,t,n);a&&r.emitLine(`${t}${a};`)}}}function Yn(e,t,n){var r,i,o,a,s,l,u,c;if(vt(e)){let _=(typeof e.value=="bigint",e.value.toString());return e.tag==="F32"?(_.includes(".")?_:_+".0")+"f":e.tag==="F64"||e.tag==="ComptimeFloat"?_.includes(".")?_:_+".0":e.tag==="U64"||e.tag==="Usize"?_+"ULL":e.tag==="I64"||e.tag==="Isize"?_+"LL":e.tag==="U32"?_+"U":_}else{if($t(e))return e.value?"true":"false";if(et(e)){let _=((r=n==null?void 0:n.$)==null?void 0:r.convertedRuntimeType)||((i=n==null?void 0:n.$)==null?void 0:i.type);if(_&&hr(_)&&_.fields.length===1){let p=_.fields[0].type;if(Et(p)){let f=j(_,t),m=JSON.stringify(e.value),h=Buffer.byteLength(e.value,"utf8");return`(${f}){ .data = (uint8_t*)${m}, .length = ${h} }`}}if(_&&Et(_)){let p=j(_,t),f=JSON.stringify(e.value),m=Buffer.byteLength(e.value,"utf8");return`(${p}){ .data = (uint8_t*)${f}, .length = ${m} }`}if(!_||tn(_)){for(let p of Object.values(t.types))if(hr(p.type)&&p.type.fields.length===1&&Et(p.type.fields[0].type)){let f=JSON.stringify(e.value),m=Buffer.byteLength(e.value,"utf8");return`(${p.cName}){ .data = (uint8_t*)${f}, .length = ${m} }`}}return JSON.stringify(e.value)}else if(mn(e)){let _=e.type,p=Gn(_);if(p){let y=_.variants.find(g=>g.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 Yn(e.fields[0],t,{$:{type:p,convertedRuntimeType:p}})}if(Fr(_))return Rn(_,e.variantName,t);let m=(o=t.types[_.id])==null?void 0:o.cName;if(!m)return`// Error: No C type name found for enum ${M(_)}`;let h=Rn(_,e.variantName,t);if(!e.fields||e.fields.length===0)return`(${m}){ .tag = ${h} }`;{let y=_.variants.find(v=>v.name===e.variantName);if(!y||!y.fields)return`// Error: Variant ${e.variantName} not found or has no fields`;let g=e.fields.map((v,T)=>{let $=y.fields[T];if($&&!Oe($.type)){let C=$e($.label),w=Yn(v,t);return`.${C} = ${w}`}return null}).filter(v=>v!==null);return g.length===0?`(${m}){ .tag = ${h} }`:`(${m}){ .tag = ${h}, .data = { .${e.variantName} = { ${g.join(", ")} } } }`}}else if(Zn(e)){let _=e.type,p=(a=t.types[_.id])==null?void 0:a.cName;if(!p)return`// Error: No C type name found for tuple ${M(_)}
|