selfhost: expand Decl to 256 fields, fix unary precedence, add discard/var parsing, fix diag buffer overflow

- ast.bux: Decl expanded with field0..field255, variant0..7, param0..8
- parser.bux: add parserParseUnary for correct unary precedence; handle tkDiscard statements; allow var without initializer (matching bootstrap); add diagCount bounds check in parserEmitDiag
- hir.bux: HirParam changed to pointers
- hir_lower.bux: full field chains for struct lowering
- c_backend.bux: hardened -> vs . field access; null checks in CBE_GetExprTypeName
- cli.bux: add -lcrypto to linker
This commit is contained in:
2026-06-07 14:58:23 +03:00
parent 0bdef58182
commit 3b4456f01f
7 changed files with 1254 additions and 105 deletions
+221 -29
View File
@@ -255,7 +255,35 @@ struct Decl {
retType: *TypeExpr,
// Body
refBody: *Block,
// Struct fields (up to 64)
// Enum variants (up to 8)
variantCount: int,
variant0: EnumVariant,
variant1: EnumVariant,
variant2: EnumVariant,
variant3: EnumVariant,
variant4: EnumVariant,
variant5: EnumVariant,
variant6: EnumVariant,
variant7: EnumVariant,
// Impl methods (up to 4)
methodCount: int,
// Use/import
useKind: int,
usePath: String,
useNames: String, // joined names for multi-import
// Const
constType: *TypeExpr,
constValue: *Expr,
// Type alias
aliasType: *TypeExpr,
// Extern func
extFuncDll: String,
extFuncVariadic: bool,
extFuncRetType: *TypeExpr,
// Children
childDecl1: *Decl, // linked list of decls (for module items, impl methods)
childDecl2: *Decl,
// Struct fields (up to 256)
fieldCount: int,
field0: StructField,
field1: StructField,
@@ -321,34 +349,198 @@ struct Decl {
field61: StructField,
field62: StructField,
field63: StructField,
// Enum variants (up to 8)
variantCount: int,
variant0: EnumVariant,
variant1: EnumVariant,
variant2: EnumVariant,
variant3: EnumVariant,
variant4: EnumVariant,
variant5: EnumVariant,
variant6: EnumVariant,
variant7: EnumVariant,
// Impl methods (up to 4)
methodCount: int,
// Use/import
useKind: int,
usePath: String,
useNames: String, // joined names for multi-import
// Const
constType: *TypeExpr,
constValue: *Expr,
// Type alias
aliasType: *TypeExpr,
// Extern func
extFuncDll: String,
extFuncVariadic: bool,
extFuncRetType: *TypeExpr,
// Children
childDecl1: *Decl, // linked list of decls (for module items, impl methods)
childDecl2: *Decl,
field64: StructField,
field65: StructField,
field66: StructField,
field67: StructField,
field68: StructField,
field69: StructField,
field70: StructField,
field71: StructField,
field72: StructField,
field73: StructField,
field74: StructField,
field75: StructField,
field76: StructField,
field77: StructField,
field78: StructField,
field79: StructField,
field80: StructField,
field81: StructField,
field82: StructField,
field83: StructField,
field84: StructField,
field85: StructField,
field86: StructField,
field87: StructField,
field88: StructField,
field89: StructField,
field90: StructField,
field91: StructField,
field92: StructField,
field93: StructField,
field94: StructField,
field95: StructField,
field96: StructField,
field97: StructField,
field98: StructField,
field99: StructField,
field100: StructField,
field101: StructField,
field102: StructField,
field103: StructField,
field104: StructField,
field105: StructField,
field106: StructField,
field107: StructField,
field108: StructField,
field109: StructField,
field110: StructField,
field111: StructField,
field112: StructField,
field113: StructField,
field114: StructField,
field115: StructField,
field116: StructField,
field117: StructField,
field118: StructField,
field119: StructField,
field120: StructField,
field121: StructField,
field122: StructField,
field123: StructField,
field124: StructField,
field125: StructField,
field126: StructField,
field127: StructField,
field128: StructField,
field129: StructField,
field130: StructField,
field131: StructField,
field132: StructField,
field133: StructField,
field134: StructField,
field135: StructField,
field136: StructField,
field137: StructField,
field138: StructField,
field139: StructField,
field140: StructField,
field141: StructField,
field142: StructField,
field143: StructField,
field144: StructField,
field145: StructField,
field146: StructField,
field147: StructField,
field148: StructField,
field149: StructField,
field150: StructField,
field151: StructField,
field152: StructField,
field153: StructField,
field154: StructField,
field155: StructField,
field156: StructField,
field157: StructField,
field158: StructField,
field159: StructField,
field160: StructField,
field161: StructField,
field162: StructField,
field163: StructField,
field164: StructField,
field165: StructField,
field166: StructField,
field167: StructField,
field168: StructField,
field169: StructField,
field170: StructField,
field171: StructField,
field172: StructField,
field173: StructField,
field174: StructField,
field175: StructField,
field176: StructField,
field177: StructField,
field178: StructField,
field179: StructField,
field180: StructField,
field181: StructField,
field182: StructField,
field183: StructField,
field184: StructField,
field185: StructField,
field186: StructField,
field187: StructField,
field188: StructField,
field189: StructField,
field190: StructField,
field191: StructField,
field192: StructField,
field193: StructField,
field194: StructField,
field195: StructField,
field196: StructField,
field197: StructField,
field198: StructField,
field199: StructField,
field200: StructField,
field201: StructField,
field202: StructField,
field203: StructField,
field204: StructField,
field205: StructField,
field206: StructField,
field207: StructField,
field208: StructField,
field209: StructField,
field210: StructField,
field211: StructField,
field212: StructField,
field213: StructField,
field214: StructField,
field215: StructField,
field216: StructField,
field217: StructField,
field218: StructField,
field219: StructField,
field220: StructField,
field221: StructField,
field222: StructField,
field223: StructField,
field224: StructField,
field225: StructField,
field226: StructField,
field227: StructField,
field228: StructField,
field229: StructField,
field230: StructField,
field231: StructField,
field232: StructField,
field233: StructField,
field234: StructField,
field235: StructField,
field236: StructField,
field237: StructField,
field238: StructField,
field239: StructField,
field240: StructField,
field241: StructField,
field242: StructField,
field243: StructField,
field244: StructField,
field245: StructField,
field246: StructField,
field247: StructField,
field248: StructField,
field249: StructField,
field250: StructField,
field251: StructField,
field252: StructField,
field253: StructField,
field254: StructField,
field255: StructField,
}
// ---------------------------------------------------------------------------