diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-09-30 20:38:46 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-09-30 20:38:46 +0100 |
| commit | c6aac264fa8001ff5e55e5ac6f56289ff0a755ee (patch) | |
| tree | 4ff0521b330e5a2b0183d3bab2f762a669b5efa5 /src/tokenizer.cpp | |
| parent | 04b5d8c132e8aabb3bb5dff31683cb45d4dff9c0 (diff) | |
Begin work on const llvm aggregate literals
Diffstat (limited to 'src/tokenizer.cpp')
| -rw-r--r-- | src/tokenizer.cpp | 51 |
1 files changed, 14 insertions, 37 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index 07220b9dc..c86a4b2f8 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -166,12 +166,20 @@ struct ErrorCollector { TokenPos prev; i64 count; i64 warning_count; + gbMutex mutex; }; gb_global ErrorCollector global_error_collector; +void init_global_error_collector(void) { + gb_mutex_init(&global_error_collector.mutex); +} + void warning(Token token, char *fmt, ...) { + gb_mutex_lock(&global_error_collector.mutex); + defer (gb_mutex_unlock(&global_error_collector.mutex)); + global_error_collector.warning_count++; // NOTE(bill): Duplicate error, skip it if (!token_pos_are_equal(global_error_collector.prev, token.pos)) { @@ -188,6 +196,9 @@ void warning(Token token, char *fmt, ...) { } void error(Token token, char *fmt, ...) { + gb_mutex_lock(&global_error_collector.mutex); + defer (gb_mutex_unlock(&global_error_collector.mutex)); + global_error_collector.count++; // NOTE(bill): Duplicate error, skip it if (!token_pos_are_equal(global_error_collector.prev, token.pos)) { @@ -204,6 +215,9 @@ void error(Token token, char *fmt, ...) { } void syntax_error(Token token, char *fmt, ...) { + gb_mutex_lock(&global_error_collector.mutex); + defer (gb_mutex_unlock(&global_error_collector.mutex)); + global_error_collector.count++; // NOTE(bill): Duplicate error, skip it if (!token_pos_are_equal(global_error_collector.prev, token.pos)) { @@ -232,43 +246,6 @@ void compiler_error(char *fmt, ...) { -// NOTE(bill): result == priority -i32 token_precedence(Token t) { - switch (t.kind) { - case Token_CmpOr: - return 1; - case Token_CmpAnd: - return 2; - case Token_CmpEq: - case Token_NotEq: - case Token_Lt: - case Token_Gt: - case Token_LtEq: - case Token_GtEq: - return 3; - case Token_Add: - case Token_Sub: - case Token_Or: - case Token_Xor: - return 4; - case Token_Mul: - case Token_Quo: - case Token_Mod: - case Token_And: - case Token_AndNot: - case Token_Shl: - case Token_Shr: - return 5; - case Token_DoublePrime: - return 6; - case Token_as: - case Token_transmute: - case Token_down_cast: - return 7; - } - - return 0; -} gb_inline b32 token_is_literal(Token t) { |