This repository has been archived by the owner on May 11, 2020. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hum...
this kind of type assertion, using the "comma-ok" variant, shouldn't panic.
so I must admit I am not completely clear on what
panic
this should cure.that said, it seems indeed that we should probably type-assert for
goFunction
:(as we only ever fill
vm.funcs
withgoFunction{...}
values...)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, my fault for underspecifying - it passes this check, so in the code below it (line 98) it panics trying to access it as a compiledFunction
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmmm, I dont understand how we would hit this panic. Consider that
vm.funcs
is of type[]function
, andfunction
is an interface type. ThegoFunction
type only implements the necessary interface methods on itself, it does not implement it on its pointer receiver.As such, I was thinking only
goFunction{}
could implementfunction
, not a*goFunction
? Now I'm not sure ...Either way, the current logic is negated, considering we only want to run the loop logic on the func if it is of type
compiledFunction
.What do you think of a fix like this?