Skip to content

Commit 938f298

Browse files
committed
zeroed value doesn't support type inferring at top level, because lack of type passing in current implementation, will do later
1 parent 6d3e79a commit 938f298

3 files changed

Lines changed: 12 additions & 1 deletion

File tree

.idea/vcs.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/symres/LinkSignature.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,13 +372,21 @@ void TopLevelLinkSignature::VisitIndexOperator(IndexOperator* value) {
372372
}
373373
}
374374

375-
void TopLevelLinkSignature::TopLevelLinkSignature::VisitIsValue(IsValue* value) {
375+
void TopLevelLinkSignature::VisitIsValue(IsValue* value) {
376376
RecursiveVisitor<TopLevelLinkSignature>::VisitIsValue(value);
377377
if(!comptime_context) {
378378
diagnoser.error("cannot determine at runtime outside function body", value);
379379
}
380380
}
381381

382+
void TopLevelLinkSignature::VisitZeroedValue(ZeroedValue* value) {
383+
if (value->getType() == nullptr) {
384+
diagnoser.error("couldn't infer type for zeroed value", value);
385+
return;
386+
}
387+
RecursiveVisitor<TopLevelLinkSignature>::VisitZeroedValue(value);
388+
}
389+
382390
void TopLevelLinkSignature::VisitLambdaFunction(LambdaFunction* value) {
383391
RecursiveVisitor<TopLevelLinkSignature>::VisitLambdaFunction(value);
384392
if(!comptime_context) {

compiler/symres/LinkSignature.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,8 @@ class TopLevelLinkSignature : public RecursiveVisitor<TopLevelLinkSignature> {
174174

175175
void VisitIsValue(IsValue* value);
176176

177+
void VisitZeroedValue(ZeroedValue* value);
178+
177179
void VisitLambdaFunction(LambdaFunction* value);
178180

179181
void VisitNegativeValue(NegativeValue* value);

0 commit comments

Comments
 (0)