Skip to content

Commit ff1302f

Browse files
Fix optional test to be functional (#1076)
1 parent 4b73ba3 commit ff1302f

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

interpreter/planner.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ func (p *planner) planCreateList(expr ast.Expr) (Interpretable, error) {
506506
id: expr.ID(),
507507
elems: elems,
508508
optionals: optionals,
509-
hasOptionals: len(optionals) != 0,
509+
hasOptionals: len(optionalIndices) != 0,
510510
adapter: p.adapter,
511511
}, nil
512512
}
@@ -518,6 +518,7 @@ func (p *planner) planCreateMap(expr ast.Expr) (Interpretable, error) {
518518
optionals := make([]bool, len(entries))
519519
keys := make([]Interpretable, len(entries))
520520
vals := make([]Interpretable, len(entries))
521+
hasOptionals := false
521522
for i, e := range entries {
522523
entry := e.AsMapEntry()
523524
keyVal, err := p.Plan(entry.Key())
@@ -532,13 +533,14 @@ func (p *planner) planCreateMap(expr ast.Expr) (Interpretable, error) {
532533
}
533534
vals[i] = valVal
534535
optionals[i] = entry.IsOptional()
536+
hasOptionals = hasOptionals || entry.IsOptional()
535537
}
536538
return &evalMap{
537539
id: expr.ID(),
538540
keys: keys,
539541
vals: vals,
540542
optionals: optionals,
541-
hasOptionals: len(optionals) != 0,
543+
hasOptionals: hasOptionals,
542544
adapter: p.adapter,
543545
}, nil
544546
}
@@ -554,6 +556,7 @@ func (p *planner) planCreateStruct(expr ast.Expr) (Interpretable, error) {
554556
optionals := make([]bool, len(objFields))
555557
fields := make([]string, len(objFields))
556558
vals := make([]Interpretable, len(objFields))
559+
hasOptionals := false
557560
for i, f := range objFields {
558561
field := f.AsStructField()
559562
fields[i] = field.Name()
@@ -563,14 +566,15 @@ func (p *planner) planCreateStruct(expr ast.Expr) (Interpretable, error) {
563566
}
564567
vals[i] = val
565568
optionals[i] = field.IsOptional()
569+
hasOptionals = hasOptionals || field.IsOptional()
566570
}
567571
return &evalObj{
568572
id: expr.ID(),
569573
typeName: typeName,
570574
fields: fields,
571575
vals: vals,
572576
optionals: optionals,
573-
hasOptionals: len(optionals) != 0,
577+
hasOptionals: hasOptionals,
574578
provider: p.provider,
575579
}, nil
576580
}

0 commit comments

Comments
 (0)