Skip to content

Commit d3e4bad

Browse files
chqrliebvdberg
authored andcommitted
compiler: add comments and TODOs
1 parent 95cafbc commit d3e4bad

File tree

4 files changed

+7
-0
lines changed

4 files changed

+7
-0
lines changed

ast/type_ref.c2

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public fn void TypeRefHolder.init(TypeRefHolder* h) {
6868
TypeRef* r = cast<TypeRef*>(&h.ref);
6969
r.flagBits = 0;
7070
r.dest = 0;
71+
// can leave other members uninitialized because flags and counts are zero
7172
}
7273

7374
// note: returns dynamic size only!

ast/var_decl.c2

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public fn VarDecl* VarDecl.create(ast_context.Context* c,
6767
u32 size = sizeof(VarDecl) + ref.getExtraSize();
6868
// Note: assignLoc only used for initValue
6969
// Note: for incremental arrays, the initValue will be set later
70+
// TODO: better handling of sizeof(SrcLoc)/sizeof(SrcLoc*)
7071
if (initValue || ref.isIncrArray()) size += sizeof(Expr*) + sizeof(SrcLoc*); // Actually SrcLoc, but need ptr alignment
7172
assert (kind != VarDeclKind.StructMember);
7273

parser/c2_parser.c2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ public fn void Parser.parse(Parser* p, i32 file_id, bool is_interface, bool is_g
127127
}
128128
#endif
129129
buf.free();
130+
// TODO: decommission p.tokenizer
130131
}
131132

132133
fn void Parser.consumeToken(Parser* p) {
@@ -683,6 +684,7 @@ fn void Parser.parseSingleTypeSpecifier(Parser* p, TypeRefHolder* ref, bool allo
683684
p.error("expected type specifier");
684685
}
685686

687+
// TODO: handle qualified pointers
686688
u32 depth = 0;
687689
while (p.tok.kind == Kind.Star) {
688690
depth++;

parser/c2_parser_switch.c2

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ fn Stmt* Parser.parseSwitchStmt(Parser* p) {
3737

3838
p.expectAndConsume(Kind.LBrace);
3939

40+
// TODO: potential memory leak on error
4041
case_list.List cases;
4142
cases.init();
4243

@@ -64,6 +65,7 @@ fn Stmt* Parser.parseSwitchStmt(Parser* p) {
6465
}
6566

6667
fn Expr* Parser.parseCaseCondition(Parser* p, identifier_expr_list.List* list) {
68+
// TODO: parse constant expression, not just single token.
6769
bool multi_case = false;
6870
if (p.tok.kind == Kind.Identifier) {
6971
Token t2 = p.tokenizer.lookahead(1);
@@ -108,6 +110,7 @@ fn Expr* Parser.parseCaseCondition(Parser* p, identifier_expr_list.List* list) {
108110
}
109111

110112
while (1) {
113+
// TODO accept general ranges: expr1 ... expr1 and let analyser check if expr1 <= expr2
111114
p.expectIdentifier();
112115

113116
IdentifierExpr* id1 = p.parseIdentifier();

0 commit comments

Comments
 (0)