Open
Conversation
I am not sure whether this is important enough to be included in the lecture notes, but using `val` here can cause initialization problems (access to `symMap` causes `null` pointer exception).
The problem occurred when executing
~~~scala
trait MyLanguage extends Integers with Convs
trait MyLanguageExp extends MyLanguage with IntegersExp with ConvsExp
trait testProgram { self: MyLanguage =>
val x: Rep[Int] = lift(42) + lift(1) * 3
}
object test extends testProgram with MyLanguageExp
~~~
~~~text
java.lang.NullPointerException
at BaseExp$class.findOrCreateDefinition
at test$.findOrCreateDefinition
at BaseExp$class.toAtom
at test$.toAtom
at IntegersExp$class.mult
~~~
Instead using `lazy val` fixes the problem, since it provide means for initialization order independence.
Collaborator
|
Thanks for submitting a pull request. But I wonder: wouldn't object test extends MyLanguageExp with testProgramor some variation avoid the problem? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
I am not sure whether this is important enough to be included in the lecture notes, but using
valhere can cause initialization problems (access tosymMapto early causesnullpointer exception).The problem occurred when executing
Instead using
lazy valfixes the problem, since it provide means for initialization order independence.