aboutsummaryrefslogtreecommitdiff
path: root/src/types.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2017-11-28 22:12:33 +0000
committergingerBill <bill@gingerbill.org>2017-11-28 22:12:33 +0000
commitcfabc0e61f2c3dc00fd367e3f9bf1a89461971ef (patch)
tree2ab0837c107e9d7f20bba979bf08865d26b59407 /src/types.cpp
parent91b534d128be65ee672fd21f8100a15244597604 (diff)
Remove `using` in arrays; Remove `_` non-exported struct fields
Start determining slow parts of the compiler
Diffstat (limited to 'src/types.cpp')
-rw-r--r--src/types.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/types.cpp b/src/types.cpp
index 8dae03451..225f01bd8 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -950,7 +950,18 @@ bool is_type_valid_for_keys(Type *t) {
bool is_type_indexable(Type *t) {
- return is_type_array(t) || is_type_slice(t) || is_type_vector(t) || is_type_string(t);
+ Type *bt = base_type(t);
+ switch (bt->kind) {
+ case Type_Basic:
+ return is_type_string(bt);
+ case Type_Array:
+ case Type_Slice:
+ case Type_Vector:
+ case Type_DynamicArray:
+ case Type_Map:
+ return true;
+ }
+ return false;
}
bool is_type_polymorphic_struct(Type *t) {