[goalc] Fix error when putting #f in an array of symbols (#1804)

This commit is contained in:
water111 2022-08-26 15:54:29 -04:00 committed by GitHub
parent 24590ec670
commit bc3cd2cf72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 3 deletions

View File

@ -848,8 +848,10 @@ void Compiler::fill_static_array_inline(const goos::Object& form,
typecheck(form, TypeSpec("integer"), sr.typespec());
} else {
if (sr.is_symbol() && sr.symbol_name() == "#f") {
// allow #f for any structure.
// allow #f for any structure, or symbol (no longer a structure in jak 2)
if (content_type.base_type() != "symbol") {
typecheck(form, TypeSpec("structure"), content_type);
}
} else {
typecheck(form, content_type, sr.typespec());
}

View File

@ -26,6 +26,9 @@
(-> type parent parent parent)
(-> type parent parent parent parent))
(define *array-of-syms* (new 'static 'array symbol 2 'asdf #f))
(format #t "array: ~A ~A~%" (-> *array-of-syms* 0) (-> *array-of-syms* 1))
#|
empty pair: () () () #t #f\
empty pair type: pair
@ -34,4 +37,5 @@ basic types: type symbol string function
bools: #t #f #t #f #f #t
zero: 0
parent of type: basic structure object object
array: asdf #f
|#

View File

@ -51,5 +51,6 @@ TEST_F(Jak2GoalcTests, All) {
"basic types: type symbol string function\n"
"bools: #t #f #t #f #f #t\n"
"zero: 0\n"
"parent of type: basic structure object object\n0\n"});
"parent of type: basic structure object object\n"
"array: asdf #f\n0\n"});
}