aboutsummaryrefslogtreecommitdiff
path: root/src/check_type.cpp
diff options
context:
space:
mode:
authorjockus <joakim.hentula@gmail.com>2020-08-27 08:24:59 +0100
committerjockus <joakim.hentula@gmail.com>2020-08-27 08:24:59 +0100
commit914c99a15edf325399fb758605b80fe31d5f4813 (patch)
treece86f022b368fb42a61041e01051c80765b86d64 /src/check_type.cpp
parent8de70ce73dd3fc9740a0589e6167d950d02f244d (diff)
parentd31c63c0ae76115d1b9aa8b5d1f8bf7130e74977 (diff)
Merge branch 'master' into fix-core-path-name-extension
Diffstat (limited to 'src/check_type.cpp')
-rw-r--r--src/check_type.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/check_type.cpp b/src/check_type.cpp
index fe76d65d5..7be70c11d 100644
--- a/src/check_type.cpp
+++ b/src/check_type.cpp
@@ -1137,7 +1137,7 @@ void check_bit_set_type(CheckerContext *c, Type *type, Type *named_type, Ast *no
} else {
Type *elem = check_type_expr(c, bs->elem, nullptr);
- #if 1
+ #if 0
if (named_type != nullptr && named_type->kind == Type_Named &&
elem->kind == Type_Enum) {
// NOTE(bill): Anonymous enumeration
@@ -1662,6 +1662,10 @@ Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_params, bool *is
error(name, "'auto_cast' can only be applied to variable fields");
p->flags &= ~FieldFlag_auto_cast;
}
+ if (p->flags&FieldFlag_const) {
+ error(name, "'#const' can only be applied to variable fields");
+ p->flags &= ~FieldFlag_const;
+ }
param = alloc_entity_type_name(scope, name->Ident.token, type, EntityState_Resolved);
param->TypeName.is_type_alias = true;
@@ -1726,6 +1730,10 @@ Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_params, bool *is
error(name, "'auto_cast' can only be applied to variable fields");
p->flags &= ~FieldFlag_auto_cast;
}
+ if (p->flags&FieldFlag_const) {
+ error(name, "'#const' can only be applied to variable fields");
+ p->flags &= ~FieldFlag_const;
+ }
if (!is_type_constant_type(type) && !is_type_polymorphic(type)) {
gbString str = type_to_string(type);
@@ -1745,6 +1753,9 @@ Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_params, bool *is
if (p->flags&FieldFlag_auto_cast) {
param->flags |= EntityFlag_AutoCast;
}
+ if (p->flags&FieldFlag_const) {
+ param->flags |= EntityFlag_ConstInput;
+ }
param->state = EntityState_Resolved; // NOTE(bill): This should have be resolved whilst determining it
add_entity(ctx->checker, scope, name, param);