Skip to content

Non-Boolean Conditions fix#44

Merged
lihaoyi merged 3 commits intodatabricks:masterfrom
modusintegration:NonBooleanExpressionsFix
Oct 28, 2019
Merged

Non-Boolean Conditions fix#44
lihaoyi merged 3 commits intodatabricks:masterfrom
modusintegration:NonBooleanExpressionsFix

Conversation

@javaduke
Copy link
Copy Markdown
Contributor

An expression like [x for x in [1,2,3] if 'a'] in Jsonnet results in error "Condition must be boolean, got string" - but sjsonnet does not fail. This PR fixes it.

Eugene Berman added 2 commits October 21, 2019 12:32
An expression like [x for x in [1,2,3] if 'a'] in Jsonnet results in error "Condition must be boolean, got string" - but sjsonnet does not fail. This PR fixes it.
@lihaoyi
Copy link
Copy Markdown
Contributor

lihaoyi commented Oct 27, 2019

@javaduke can you submit the PR without all the unrelated reformatings?

@javaduke
Copy link
Copy Markdown
Contributor Author

Ah, sorry, will do. Apparently IntelliJ does all this automatically, I didn't even realize the formatting is different. Sorry about it.

@lihaoyi
Copy link
Copy Markdown
Contributor

lihaoyi commented Oct 28, 2019

Looks good, thanks!

@lihaoyi lihaoyi merged commit 4804506 into databricks:master Oct 28, 2019
stephenamar-db pushed a commit that referenced this pull request Dec 4, 2025
…lts instead of treating them as "false" (#559)

This PR fixes a bug where `filter()` and `filterMap()` mishandled filter
predicate results that weren't booleans: instead of failing with an
error, jsonnet treated any non-boolean value as though it was false. For
example:

```jsonnet
std.filter(function(x) "not a boolean", [1, 2, 3])
// sjsonnet (before): [] (silently treats non-boolean as false)
// jsonnet: RUNTIME ERROR: filter function must return boolean, got: string
// go-jsonnet: RUNTIME ERROR: Unexpected type string, expected boolean
```

The problem was that evaluator code was checking
`.isInstanceOf[Val.True]` rather than explicitly checking for booleans
(very similar to the past issue fixed in
#44).

This PR's fix is to update this logic to use `.asBoolean` , which throws
an explicit type error for non-booleans:

```
sjsonnet.Error: Wrong parameter type: expected Boolean, got string
```

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants