Closed arass closed 7 years ago
Are u using the latest release (1.3.6) ? The issue is that 1.3.x release uses solc 0.3.x where your code is compatible with 0.4.x
Your best bet is to look at the config and provide the binaries for the version 0.4.4
I pulled latest 1.4.0 tree off github (this project) and that's what I was running with.
@arass Try to clean your temp directory, there might be old compiler left unpacked
Wiped the ethereumj/ethereumj-core folders (built, database-test, logs, test_db_2*). Grabbed latest of the tree (last update was 3 days ago). Swapped the updated ethereumj-core-1.4.0-SNAPSHOT.jar into my project (all other libs seemed unchanged).
Still got
"
Removed that and got:
@arass We moved solc binaries from core package to a separate project so this might be a single time problem. However @cupuyc can you please make sure the solc versions will not conflict with the next solc upgrade
@Nashatyrev Bellow scenarios works fine for me:
Running command via terminal ./gradlew test -Dtest.single=CompilerTest
then switch org.ethereum:solcJ-all:0.4.3
version to org.ethereum:solcJ-all:0.4.4
and run again. Appropriate solc version was used.
Switching solc version in the same line org.ethereum:solcJ-all:0.4.3
and run test CompilerTest in Idea IDE. In that case I had to press "Refresh gradle" to get solc version updated.
We can't put fix without ability to reproduce. But to improve situation we could put solc binaries to project dir, instead of temp dir.
Should we apply changes here? Also I remember you asked to implement select solc version at runtime. Do we need that now?
BTW solc with release 0.4.6 exists
I don't think putting any temp files to a project dir is a good idea (you may just running a single fat jar) M.b. it make sense to unpack binaries to a version specific directory?
Typically one dumps all "output" of a project into 1 or 2 folders off the project folder. So that if someone needs to "clean" - they can do it in 1 shot and not have to fish for changes.
So you'll have an "out" folder which will have a folder for each environment you are deploying to (production/test). Followed by a folder per artifact.
Other approach is a "build" folder where all results of the last build go to (with any required subfolders).
Either way - I would recommend keeping all the droppings somewhere within a project.
If you wanna be "special" - give people an override, but default somewhere within a project tree. If I download another branch/label - I should NOT be clashing with other version under any circumstances. Or we'll be in "DLL HELL".
Compiler complains about following line: _; (underscore with semicolon). The error is: