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:
+221
-29
@@ -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,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user