Commit Graph
1645 Commits
Author SHA1 Message Date
chriseth ead1a3b33f Include creation code only once. 2017-01-24 17:41:31 +01:00
chriseth 7e6f1b3f00 Use int arithmetics for stack adjustment. 2017-01-24 12:07:09 +01:00
chriseth 23eca813f5 Change clearStorageLoop to TypePointer. 2017-01-24 12:07:09 +01:00
chriseth 82a00e7dc5 Use shared_ptrs to enable shared_from_this. 2017-01-24 12:06:41 +01:00
chriseth cea020b89e Convert ArrayUtils routines into low-level functions. 2017-01-24 12:06:40 +01:00
chriseth b60623521f Move some util functions to low-level functions. 2017-01-24 12:06:40 +01:00
chriseth d0e8d340a5 Low level named functions for CompilerContext. 2017-01-24 12:06:40 +01:00
chriseth b52a60402d Merge pull request #1245 from ethereum/1215
Allow multiple events of the same name
2017-01-24 11:52:21 +01:00
Yoichi Hirai 4e1fd68b38 analysis: disallow overloading functions with events 2017-01-23 15:25:13 +01:00
Yoichi Hirai 399b7b695a analysis: fix format 2017-01-23 15:25:13 +01:00
Yoichi Hirai 846f7dc3ea analysis: Resolve event overloading 2017-01-23 15:25:13 +01:00
Yoichi Hirai 08015590f2 analysis: Allow multiple events of the same name
Fixes #1215
2017-01-23 15:25:13 +01:00
Yoichi Hirai 9c278448c8 Merge pull request #1591 from ethereum/stackTooDeepLocation
Report source location on "stack too deep" errors.
2017-01-23 15:02:22 +01:00
chriseth 0ef460461a Check if constructor is public or not. 2017-01-20 19:22:39 +01:00
chriseth 2536bdd6d0 Report source location on "stack too deep" errors. 2017-01-20 19:01:19 +01:00
Yoichi Hirai 12b002b3b8 Merge pull request #1576 from ethereum/typeIdentifiers
Type identifiers.
2017-01-20 16:18:57 +01:00
chriseth 07b0a0a560 Make m_id const. 2017-01-20 15:56:56 +01:00
chriseth 7159944f0f Reset AST node IDs between compilation runs. 2017-01-20 12:00:16 +01:00
chriseth da178d967f Properly escape user strings and lists. 2017-01-19 13:23:58 +01:00
chriseth 3fed790a56 Type identifiers. 2017-01-19 13:23:57 +01:00
chriseth 23a654ade8 Fix default function type name visibility. 2017-01-19 11:11:40 +01:00
Federico Bond d40ae663ec Fix typo in comment 2017-01-18 12:43:23 -03:00
chriseth 28a05e5aa3 Merge pull request #1581 from ethereum/fixosx
Fix JSON output on macos.
2017-01-18 15:41:39 +01:00
chriseth 005e190885 Merge pull request #1397 from roadriverrail/contract_collision
Error out when contracts collide on name
2017-01-18 14:28:00 +01:00
chriseth c16e141ffb Fix JSON output on macos. 2017-01-18 14:09:40 +01:00
Alex Beregszaszi 4675599170 Include SOL_VERSION_COMMIT/SOL_VERSION_PLATFORM in buildinfo.h 2017-01-17 12:54:58 +00:00
Alex Beregszaszi 350c7e7e2c Store strict version number in metadata (exclude the platform) 2017-01-17 12:54:58 +00:00
chriseth 99eaadd2cd Deterministic AST node identifiers. 2017-01-17 10:45:45 +01:00
Rhett Aultman 94b092d87c Provide fall-back method for contract lookup
Properly, contracts are now looked up via <source>:<contract> identifiers
called "fully qualified names."  As a modicum of backward-compatibility,
failure on a lookup is now backed up by seeing if the ":" exists at all,
and if it doesn't, then the known contracts are scanned for any matching
contract name.
2017-01-16 23:47:04 -05:00
Rhett Aultman 5a2331a9f6 Remove checkLibraryNameClashes()
The library name clash checker throws errors when two libraries of the
same name are spotted.  In a previous commit, this function was
rewritten to use fully-qualified names instead, which makes it redundant
to the checker for multiply-declared identifiers.  Since it no longer
serves a clear purpose, the function is being dropped.
2017-01-16 12:32:58 -05:00
Rhett Aultman 1f30982ab5 Use fully-qualified names for linking, too
Using libraries leaves behind a library link reference in the binary
which the linker must later resolve.  These link references were still
being generated by name and not by fully-qualified name.  This would
lead to a link-time collision between two libraries having the same
name but in different source units.

This change changes linker symbols over to fully-qualified names,
which resolves that issue.  This does potentially introduce a new
problem, which is that linker symbols appear to be limited to 36
characters and are truncated.  Storing paths extends the average
symbol size, and it would be great if truncation was from the tail
rather than the head.
2017-01-16 12:32:57 -05:00
Rhett Aultman 85c55c796a Remove unique error for contract collision
Because contracts are uniquely identified by their source unit, there
is no need for a unique error for this; it's actually covered by the
checker for double-declaration of identifiers.
2017-01-16 12:32:57 -05:00
Rhett Aultman f10bf36ae3 Move fullyQualified() name to Declaration 2017-01-16 12:32:57 -05:00
Rhett Aultman 0c98e4b2da Stylistic corrections 2017-01-16 12:32:57 -05:00
Rhett Aultman e3b0827721 Push the error instead of throwing it
Throwing a CompilerError on multiple contract definition violates the
expectations of the test suite, which thinks that compile() will
return false if the code can't compile.  This brings contract
collision reporting in line with most of the other errors.
2017-01-16 12:32:57 -05:00
Rhett Aultman 8f25bd54e3 Drop ':' if the source file name is empty
A large number of tests compile contracts while passing in an empty
string for the source name.  This leads to it being keyed by the name
":<contract>", while the tests try to look it up under the name
"<contract>".  This change resolves that issue by dropping the ':' in
cases where there is, effectively, no source file to prepend anyway.
2017-01-16 12:32:57 -05:00
Rhett Aultman 071b936b37 Only avoid collision if it's the same file
@chriseth had suggested that it would be better if contracts were
referenced in a file:contract notation, and that we output .bin files
that prepend original path names if necessary to avoid a collision.

This commit is mostly a draft; it still needs to be run through the test
suite.
2017-01-16 12:32:57 -05:00
Rhett Aultman 9e88f1eebe Tab whitespace cleanup (again) 2017-01-16 12:32:57 -05:00
Rhett Aultman ce3082dec2 Tidy up the error message 2017-01-16 12:32:57 -05:00
Rhett Aultman b24ca4fa23 Fix tab, drop stupid '!!!', change error message. 2017-01-16 12:32:57 -05:00
Rhett Aultman f3a84eab91 Error out when contracts collide on name
The previous behaviour, courtesy of the [] operator in std::map, would
uncritically store a new ContractDefinition in m_contracts even when a
ContractDefinition already existed.  This "resolved" collissions on contract
names by clobbering the original one with the new one, and could lead to
scenarios where the clobber would only be discovered when the original
ContractDefinition could not be found or referred to, which was an unhelpful
InternalCompilerError.

This change checks the m_contracts map for a collision first and will not let
the ContractDefinition be changed to a new one once it's set, throwing a
CompilerError with information about the conflict.
2017-01-16 12:32:57 -05:00
chriseth bde0b40634 Merge pull request #1479 from ethereum/function_variable_mixin
Disallow mixin of functions and attributes under the same name
2017-01-13 09:36:00 +01:00
Yoichi Hirai abc24420a7 ast: events have FunctionType too 2017-01-11 20:06:59 +01:00
Yoichi Hirai 7fea4b7360 analysis: use Declaration::functionType() in another location 2017-01-11 19:55:55 +01:00
Yoichi Hirai eda147f47b ast: add Declaration::functionType() 2017-01-11 19:55:50 +01:00
VoR0220 b6508ca992 fixed
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-11 12:03:54 -06:00
VoR0220 4542f459f1 added fix and a test for order independence of nested prefixing
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-11 11:45:14 -06:00
Yoichi Hirai 0216f34010 analysis: avoid emscripten build failure 2017-01-11 18:28:11 +01:00
Yoichi Hirai 91d4e8e0ba analysis: changes necessary to compile std/StandardToken.sol 2017-01-11 18:28:11 +01:00
Yoichi Hirai 42b6726173 analysis: allow some shadowings explicitly 2017-01-11 18:28:11 +01:00