aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #2171 from ethereum/splitParseAndAnalyzechriseth2017-04-282-17/+63
|\ | | | | refactoring parse() into two separate functions
| * error fixeddjuju2017-04-281-8/+7
| |
| * enumchecks not workingdjuju2017-04-282-15/+36
| |
| * documentation, checks and renamingdjuju2017-04-272-14/+13
| |
| * refactoring parse() into two separate functionsdjuju2017-04-272-7/+34
| |
* | Merge pull request #2193 from ethereum/julia-assign-stackchriseth2017-04-281-0/+2
|\ \ | | | | | | Disallow assign from stack in Julia (=: var)
| * | Disallow assign from stack in Julia (=: var)Alex Beregszaszi2017-04-281-1/+3
| | |
| * | Do not validate identifiers against EVM instructions in JULIAAlex Beregszaszi2017-04-281-4/+6
| | |
| * | Add flag for JULIA parsingAlex Beregszaszi2017-04-281-1/+4
| | |
* | | Merge pull request #2189 from ethereum/julia-instructionschriseth2017-04-282-5/+10
|\ \ \ | |/ / |/| | Do not disallow EVM instructions as identifiers in Julia
| * | Do not validate identifiers against EVM instructions in JULIAAlex Beregszaszi2017-04-271-4/+6
| | |
| * | Add flag for JULIA parsingAlex Beregszaszi2017-04-271-1/+4
| | |
* | | Make assembler errors fatalAlex Beregszaszi2017-04-271-12/+4
| | |
* | | Catch assembler exceptions and throw readable Solidity exceptionsAlex Beregszaszi2017-04-271-2/+35
|/ /
* | Remove parentheses from around function return parametersAlex Beregszaszi2017-04-272-4/+2
| |
* | Check stack height during code generation.chriseth2017-04-261-6/+34
| |
* | Refactor to combined scope and stack height info.chriseth2017-04-2611-63/+151
| |
* | Store stack height in analysis phase.chriseth2017-04-262-5/+35
| |
* | Fix storage access tests.chriseth2017-04-252-15/+21
| |
* | Special case for storage types with offset zero.chriseth2017-04-251-3/+18
| |
* | Pass internal resolver to assembly analyzer.chriseth2017-04-251-1/+2
| |
* | Fix refactoring error.chriseth2017-04-251-2/+2
| |
* | Build fix.chriseth2017-04-252-4/+4
| |
* | Storage access from inline assembly.chriseth2017-04-254-17/+75
| |
* | Another stack check.chriseth2017-04-251-0/+2
| |
* | Move analysis out of code generator.chriseth2017-04-257-26/+55
| |
* | Only allow access to local variables and only if they have a stack size of one.chriseth2017-04-253-63/+53
| |
* | Check again that instruction argument count is correct.chriseth2017-04-251-0/+1
| |
* | Only run stack filler on AST elements that are or contain declarations.chriseth2017-04-252-32/+4
| |
* | Review comments.chriseth2017-04-252-2/+6
| |
* | Review comments and cleanup.chriseth2017-04-254-8/+13
| |
* | Remove some errors checks from code generation (was moved to analysis already).chriseth2017-04-251-50/+10
| |
* | Perform stack height checks in assembly analysis phase.chriseth2017-04-253-37/+148
| |
* | Add some missing error locations.chriseth2017-04-251-2/+3
| |
* | Use actual type checking phase of assembler.chriseth2017-04-258-41/+48
| |
* | Split external identifier access into resolving and code generation.chriseth2017-04-259-143/+188
| |
* | Refactor assembly analysis into scope filling and checking.chriseth2017-04-258-236/+615
| |
* | Register functions.chriseth2017-04-253-33/+90
|/
* Merge pull request #2164 from ethereum/jsonio-catch-internal-exceptionschriseth2017-04-251-0/+12
|\ | | | | JSON IO catch internal exceptions
| * Catch jsoncpp exceptionsAlex Beregszaszi2017-04-251-0/+8
| |
| * Do not crash on invalid JSON inputAlex Beregszaszi2017-04-251-0/+4
| |
* | Merge pull request #2152 from ethereum/warnRevertchriseth2017-04-253-2/+11
|\ \ | |/ |/| Warn about side-effect free statements.
| * Change error message.chriseth2017-04-211-1/+1
| |
| * Warn about side-effect free statements.chriseth2017-04-213-2/+11
| |
* | Merge pull request #2161 from ethereum/jsonio-cleanupchriseth2017-04-242-8/+12
|\ \ | | | | | | Small cleanups to JSON IO
| * | Do not fail if parsing failed in StandardCompilerAlex Beregszaszi2017-04-241-1/+1
| | |
| * | Change error type names to not include spacesAlex Beregszaszi2017-04-241-6/+6
| | |
| * | Be a bit more verbose and capture Boost exceptions in StandardCompilerAlex Beregszaszi2017-04-241-1/+5
| | |
* | | Merge pull request #2159 from ethereum/jsonio-source-verifychriseth2017-04-241-4/+45
|\ \ \ | |/ / |/| | Verify supplied hash in JSON I/O
| * | Verify supplied hash in JSON I/OAlex Beregszaszi2017-04-241-4/+45
| | |
* | | Document that the ReadFileCallback should not emit exceptionsAlex Beregszaszi2017-04-222-2/+4
|/ /
* | Changed const reference to value.chriseth2017-04-221-1/+1
| |
* | Support URL sources in StandardCompilerAlex Beregszaszi2017-04-212-3/+35
|/
* Rename ast to legacyAST in StandardCompilerAlex Beregszaszi2017-04-211-1/+1
|
* Ensure the language field is present in the JSONAlex Beregszaszi2017-04-211-0/+6
|
* Pull out collectEVMObjectAlex Beregszaszi2017-04-211-17/+19
|
* Enclose local functions in a namespaceAlex Beregszaszi2017-04-211-0/+4
|
* Support Why3 in StandardCompilerAlex Beregszaszi2017-04-211-0/+24
|
* Support gas estimates in StandardCompilerAlex Beregszaszi2017-04-211-1/+1
|
* Reject import URLs for nowAlex Beregszaszi2017-04-211-1/+6
|
* Support the metadata.useLiteralContent settingAlex Beregszaszi2017-04-211-0/+3
|
* Properly split contract filename and nameAlex Beregszaszi2017-04-211-3/+10
|
* Support linkReferencesAlex Beregszaszi2017-04-211-2/+29
|
* Support new assembly outputAlex Beregszaszi2017-04-211-3/+4
|
* Move opcodes inside the bytecode sectionAlex Beregszaszi2017-04-211-1/+2
|
* Support methodIdentifiersAlex Beregszaszi2017-04-211-1/+9
|
* Support proper error reporting in StandardCompilerAlex Beregszaszi2017-04-211-18/+104
|
* Refactor formatErrorAlex Beregszaszi2017-04-211-6/+19
|
* Fail if no sources are givenAlex Beregszaszi2017-04-211-4/+1
|
* Support the AST outputAlex Beregszaszi2017-04-211-1/+2
|
* Include source mapping identifierAlex Beregszaszi2017-04-211-0/+10
|
* Output legacyAssembly in StandardCompilerAlex Beregszaszi2017-04-211-1/+12
|
* Capture error messages from the JSON parserAlex Beregszaszi2017-04-211-2/+8
|
* Add formatFatalError() to StandardCompilerAlex Beregszaszi2017-04-211-0/+15
|
* Parse remappings in StandardCompilerAlex Beregszaszi2017-04-211-0/+5
|
* Parse libraries in StandardCompilerAlex Beregszaszi2017-04-211-0/+8
|
* Parse optimizer settings in StandardCompilerAlex Beregszaszi2017-04-211-3/+6
|
* Catch exceptions of StandardCompilerAlex Beregszaszi2017-04-212-1/+15
|
* Initial implementation of StandardCompilerAlex Beregszaszi2017-04-211-0/+132
|
* Add StandardCompiler skeletonAlex Beregszaszi2017-04-212-0/+90
|
* Fix source index allocation in CompilerStack. Depending on ↵Alex Beregszaszi2017-04-211-1/+2
| | | | compiler(optimisations) this could be off-by-one.
* Merge pull request #2117 from ethereum/implementAsmOutYoichi Hirai2017-04-191-1/+1
|\ | | | | Implement missing assembly output functions and do not use PushString for assembly.
| * Implement missing assembly output functions and do not use PushString for ↵chriseth2017-04-121-1/+1
| | | | | | | | assembly.
* | Keep gas values as a string in CompilerStack::gasEstimateAlex Beregszaszi2017-04-131-3/+3
| |
* | Exclude fallback function from the internal functions in estimateGasAlex Beregszaszi2017-04-131-1/+2
| |
* | Move gasEstimate into CompilerStackAlex Beregszaszi2017-04-132-0/+88
|/
* Merge pull request #2098 from ethereum/sourceformatterAlex Beregszaszi2017-04-101-0/+11
|\ | | | | Introduce formatExceptionInformation
| * Introduce formatExceptionInformationAlex Beregszaszi2017-04-101-0/+11
| |
* | Pull out ReadFile from CompilerStackAlex Beregszaszi2017-04-103-13/+50
|/
* Fix: Contract inheriting from base with unimplemented constructor is abstract.chriseth2017-03-221-0/+10
|
* Visit structs only once.chriseth2017-03-211-3/+7
|
* Simplify interface checks for FunctionDefinitionAlex Beregszaszi2017-03-181-8/+7
|
* Disallow private or internal functions in interfacesAlex Beregszaszi2017-03-181-0/+3
|
* Disallow constructor in interfacesAlex Beregszaszi2017-03-181-0/+3
|
* Disallow enums in interfacesAlex Beregszaszi2017-03-182-0/+8
|
* Use declared instead of definedAlex Beregszaszi2017-03-181-1/+1
|
* Factor out tokenToContractKindAlex Beregszaszi2017-03-182-15/+18
|
* Reject invalid definitions for interface contractsAlex Beregszaszi2017-03-181-0/+13
|
* Support interface (contract) keyword in the parserAlex Beregszaszi2017-03-183-6/+22
|
* Add ContractKind to ContractDefinitionAlex Beregszaszi2017-03-182-5/+9
|
* Merge pull request #1773 from ethereum/ASTEntrychriseth2017-03-182-3/+50
|\ | | | | Ast entry
| * Comment.chriseth2017-03-172-2/+2
| |
| * AST entry for VariableDeclarationdjudjuu2017-03-162-3/+50
| |
* | Merge pull request #1792 from ethereum/function-kindchriseth2017-03-178-226/+222
|\ \ | | | | | | Rename FunctionType::Location to Kind
| * | Change references to FunctionType::LocationAlex Beregszaszi2017-03-167-126/+123
| | |
| * | Rename FunctionType::Location to FunctionType::KindAlex Beregszaszi2017-03-162-100/+99
| |/
* / Rename ErrorMesage to ErrorMessageAlex Beregszaszi2017-03-172-3/+3
|/
* Merge pull request #1698 from ethereum/exp-notationchriseth2017-03-152-27/+91
|\ | | | | Fix scientific notation in number literals
| * Split out parseRational from isValidLiteralAlex Beregszaszi2017-03-152-32/+58
| |
| * Rename x to valueAlex Beregszaszi2017-03-151-16/+17
| |
| * Disallow radix points in hex literalsAlex Beregszaszi2017-03-151-1/+6
| |
| * Do not try parsing hex numbers as scientific notationAlex Beregszaszi2017-03-151-1/+2
| |
| * Support older version of boostAlex Beregszaszi2017-03-151-1/+4
| |
| * Support negative exponentAlex Beregszaszi2017-03-151-6/+11
| |
| * Fix exponentional notation in number literalsAlex Beregszaszi2017-03-151-4/+27
| |
* | Mention 'transfer' in warning about unchecked 'send'.chriseth2017-03-151-2/+3
| |
* | Merge pull request #1729 from ethereum/constantvariablesYoichi Hirai2017-03-154-18/+80
|\ \ | | | | | | Only allow pure expressions for constant state variables.
| * | Turn non-constant constants error into warning.chriseth2017-03-151-2/+3
| | |
| * | Disallow constants that are neither value types nor strings.chriseth2017-03-131-0/+8
| | |
| * | Allow enum values for constants.chriseth2017-03-131-1/+4
| | |
| * | Type checking for pure expressions.chriseth2017-03-134-18/+68
| | |
* | | Require and Assert.chriseth2017-03-143-6/+12
|/ /
* | Merge pull request #1751 from ethereum/warnLiteralExpBaseYoichi Hirai2017-03-111-0/+20
|\ \ | |/ |/| Warn if base of exponentiation operation is a literal.
| * Warn about literal constant base in exponentiation.chriseth2017-03-071-0/+20
| |
* | Fix 'ambiguous overload for operator==' Boost error.Ryan Casey2017-03-101-5/+5
| |
* | Resolve build-stopping error about 'minor' and 'major' being defined in ↵Ryan Casey2017-03-101-0/+3
| | | | | | | | <sys/types.h>
* | Merge pull request #1747 from ethereum/fixICEInternalConstructorYoichi Hirai2017-03-095-26/+30
|\ \ | | | | | | Move privateness of constructor into AST itself.
| * | Move public constructor property into AST itself.chriseth2017-03-065-6/+10
| | |
| * | Strict checking for AST annotation types.chriseth2017-03-061-20/+20
| | |
* | | Merge pull request #1748 from ethereum/singletonArraychriseth2017-03-081-1/+1
|\ \ \ | | | | | | | | Use mobile type for singleton array.
| * | | Convert to mobile type for array type.chriseth2017-03-061-1/+1
| | |/ | |/|
* | | Disallow compound assignment for tuples.chriseth2017-03-081-0/+5
| | |
* | | Merge pull request #1750 from ethereum/asmoctalYoichi Hirai2017-03-081-0/+3
|\ \ \ | | | | | | | | Disallow octal numbers in parser.
| * | | Disallow octal literals.chriseth2017-03-071-0/+3
| |/ /
* | | Merge pull request #1699 from ethereum/asmlabelsYoichi Hirai2017-03-087-149/+518
|\ \ \ | | | | | | | | Assembly labels with stack information
| * | | Fix error message.chriseth2017-03-031-1/+1
| | | |
| * | | Remove stack annotations again.chriseth2017-03-036-95/+4
| | | |
| * | | First reset stack height, then register variables.chriseth2017-03-031-9/+10
| | | |
| * | | Move lambda.chriseth2017-03-031-3/+9
| | | |
| * | | Slightly cleaner label ids.chriseth2017-03-033-17/+20
| | | |
| * | | Partially add functions.chriseth2017-03-033-10/+69
| | | |
| * | | Generic visitor.chriseth2017-03-031-37/+28
| | | |
| * | | Refactor variable access.chriseth2017-03-031-40/+30
| | | |
| * | | Refactor CodeGen to recurse on blocks.chriseth2017-03-034-75/+97
| | | |
| * | | Analysis refactoring.chriseth2017-03-037-115/+466
| | | |
| * | | Parsing of labels with stack info.chriseth2017-03-034-3/+40
| | | |
* | | | Merge pull request #1733 from ethereum/selfReferentialConstantchriseth2017-03-074-0/+189
|\ \ \ \ | | | | | | | | | | Detect cyclic dependencies between constants.
| * | | | Check for circular references in constant variables.chriseth2017-03-064-0/+189
| | |/ / | |/| |
* | | | Merge pull request #1737 from ethereum/localmappingschriseth2017-03-063-4/+17
|\ \ \ \ | |/ / / |/| | | Disallow uninitialized mapping variables.
| * | | Disallow uninitialized mapping variables.chriseth2017-03-061-2/+5
| | | |
| * | | Error constructor.chriseth2017-03-062-2/+12
| | |/ | |/|
* / | Mention way to remove warning.chriseth2017-03-061-1/+5
|/ /
* | Merge pull request #1702 from ethereum/assertErrorYoichi Hirai2017-03-042-5/+5
|\ \ | |/ |/| Change effect of assert to invalid opcode.
| * Remove assert for now.chriseth2017-02-241-2/+3
| |
| * Change effect of assert to invalid opcode.chriseth2017-02-161-3/+2
| |
* | Disallow variable declaration with inferred empty tuple type.chriseth2017-03-021-0/+5
| |
* | Merge pull request #1728 from ethereum/externalfunctiontypeschriseth2017-03-021-1/+1
|\ \ | | | | | | Convert reference types to pointers in member function conversion.
| * | Convert reference types to pointers in member function conversion.chriseth2017-03-011-1/+1
| | |
* | | Add line info to serious exceptions.chriseth2017-02-251-0/+14
|/ /
* | Merge pull request #1700 from ethereum/fixNoMobilechriseth2017-02-242-2/+8
|\ \ | | | | | | Some checks for the existence of mobile type.
| * \ Merge branch 'develop' into fixNoMobilechriseth2017-02-2412-115/+224
| |\ \
| * | | Some checks for the existence of mobile type.chriseth2017-02-162-2/+8
| | |/ | |/|
* | | Disallow setting .gas() on .transfer()Alex Beregszaszi2017-02-242-10/+5
| | |
* | | Do not keep the gas stipend if sending non-zero valueAlex Beregszaszi2017-02-241-1/+1
| | |
* | | Support gas modifier on addr.transfer()Alex Beregszaszi2017-02-242-2/+4
| | |
* | | Implement address.transfer()Alex Beregszaszi2017-02-243-5/+19
| |/ |/|
* | Deposit one stack item for non-value types in inline assembly type checking.chriseth2017-02-201-1/+1
| |
* | Merge pull request #1627 from ethereum/asmfunctionschriseth2017-02-176-41/+137
|\ \ | | | | | | Parsing assembly function definitions and calls.
| * | Assembly printer for functions.chriseth2017-02-162-0/+20
| | |
| * | Parsing function calls.chriseth2017-02-164-37/+64
| | |
| * | Parsing function definitions.chriseth2017-02-164-6/+55
| |/
* / Fix early exist for fatal errors.chriseth2017-02-165-73/+86
|/
* Assembly printing fixes.chriseth2017-02-141-5/+5
|
* Review changes.chriseth2017-02-143-4/+4
|
* Assembly printer.chriseth2017-02-144-4/+204
|
* Review comments.chriseth2017-02-143-7/+7
|
* Allow different entry scope for registerDeclarations.chriseth2017-02-143-9/+22
|
* Extract scopes into compiler stack.chriseth2017-02-144-3/+13
|
* Refactor type system to allow multiple entry points.chriseth2017-02-144-15/+27
|
* Refactor NameAndTypeResolver and SyntaxChecker to allow other entry points.chriseth2017-02-146-61/+86
|
* Use the revert opcode in assert()Alex Beregszaszi2017-02-111-2/+8
|
* Use the REVERT opcode for throw;Alex Beregszaszi2017-02-111-1/+3
|
* Support revert()Alex Beregszaszi2017-02-114-1/+10
|
* Cleanup is not needed for assert()Alex Beregszaszi2017-02-101-1/+1
|
* Implement assert as a global functionAlex Beregszaszi2017-02-103-4/+15
|
* Rename SUICIDE opcode to SELFDESTRUCT in libevmasmAlex Beregszaszi2017-02-072-3/+3
|
* Warn early when exhausting stackAlex Beregszaszi2017-02-021-0/+1
|
* Disallow arrays with negative lengthAlex Beregszaszi2017-02-021-0/+2
|
* Add isNegative to RationalNumberTypeAlex Beregszaszi2017-02-021-0/+3
|
* Only capture function type to address conversionAlex Beregszaszi2017-02-011-8/+10
|
* Be more verbose on the stack-mismatch errorsAlex Beregszaszi2017-02-011-1/+1
|
* Support explicit conversion of external function type to addressAlex Beregszaszi2017-02-014-1/+25
|
* Merge pull request #1598 from wuestholz/developchriseth2017-01-276-18/+61
|\ | | | | Change translation of implicit throws
| * Changelog and review suggestions.chriseth2017-01-271-1/+1
| |
| * Uninitialized internal function should call INVALID.chriseth2017-01-261-1/+3
| |
| * Allow inserting low-level functions without calling them.chriseth2017-01-262-5/+26
| |
| * Split line.chriseth2017-01-261-1/+3
| |
| * Address feedback from code review.Valentin Wüstholz2017-01-262-6/+6
| |
| * Change translation of implicit throws (issue #1589).Valentin Wüstholz2017-01-266-13/+31
| | | | | | | | | | | | | | This adds a new invalid instruction that is used for encoding implicit throws that are emitted by the compiler. This makes it possible to distinguish such runtime errors from user-provided, explicit throws.
* | Merge pull request #1451 from LefterisJP/fix_buildchriseth2017-01-271-16/+54
|\ \ | | | | | | Accept any kind of whitespace after natspec tags
| * | Minor changes.chriseth2017-01-271-19/+17
| | |
| * | More verbose function namingLefteris Karapetsas2017-01-271-2/+2
| | |
| * | Doc tags followed by newline are now parsed properlyLefteris Karapetsas2017-01-271-1/+1
| | |
| * | Fix and better output for testsLefteris Karapetsas2017-01-251-0/+6
| | |
| * | Accept any kind of whitespace after natspec tagsLefteris Karapetsas2017-01-251-13/+47
| | |
* | | Refactor json return type generation.chriseth2017-01-274-40/+38
| |/ |/|
* | Merge pull request #1604 from ethereum/checksumsAlex Beregszaszi2017-01-266-2/+47
|\ \ | | | | | | Warn about invalid checksums of addresses.
| * | Also check library addresses.chriseth2017-01-251-21/+1
| | |
| * | Warn about invalid checksums of addresses.chriseth2017-01-256-2/+67
| |/
* | Add option to store literal sources in metadataAlex Beregszaszi2017-01-262-4/+11
| |
* | Update error message.chriseth2017-01-261-1/+1
| |
* | Disallow assignment to non-identifiers.chriseth2017-01-261-0/+2
| |
* | Disallow instructions in assignment.chriseth2017-01-261-6/+5
| |
* | Renamed function.chriseth2017-01-262-5/+5
| |
* | Moved test.chriseth2017-01-261-1/+1
| |
* | Do not allow shadowing inline assembly instructions with variablesAlex Beregszaszi2017-01-252-1/+11
|/
* Include creation code only once.chriseth2017-01-251-14/+18
|
* Use int arithmetics for stack adjustment.chriseth2017-01-241-1/+1
|
* Change clearStorageLoop to TypePointer.chriseth2017-01-242-16/+18
|
* Use shared_ptrs to enable shared_from_this.chriseth2017-01-241-4/+4
|
* Convert ArrayUtils routines into low-level functions.chriseth2017-01-241-228/+251
|
* Move some util functions to low-level functions.chriseth2017-01-245-244/+320
|
* Low level named functions for CompilerContext.chriseth2017-01-242-0/+23
|
* Merge pull request #1245 from ethereum/1215chriseth2017-01-242-7/+19
|\ | | | | Allow multiple events of the same name
| * analysis: disallow overloading functions with eventsYoichi Hirai2017-01-231-1/+6
| |
| * analysis: fix formatYoichi Hirai2017-01-231-4/+7
| |
| * analysis: Resolve event overloadingYoichi Hirai2017-01-232-14/+11
| |
| * analysis: Allow multiple events of the same nameYoichi Hirai2017-01-231-0/+7
| | | | | | | | Fixes #1215
* | Merge pull request #1591 from ethereum/stackTooDeepLocationYoichi Hirai2017-01-232-2/+14
|\ \ | | | | | | Report source location on "stack too deep" errors.
| * | Report source location on "stack too deep" errors.chriseth2017-01-212-2/+14
| |/
* / Check if constructor is public or not.chriseth2017-01-213-2/+13
|/
* Merge pull request #1576 from ethereum/typeIdentifiersYoichi Hirai2017-01-205-20/+291
|\ | | | | Type identifiers.
| * Make m_id const.chriseth2017-01-201-1/+1
| |
| * Reset AST node IDs between compilation runs.chriseth2017-01-204-5/+27
| |
| * Properly escape user strings and lists.chriseth2017-01-192-44/+86
| |
| * Type identifiers.chriseth2017-01-192-3/+210
| |
* | Fix default function type name visibility.chriseth2017-01-192-2/+4
|/
* Fix typo in commentFederico Bond2017-01-181-1/+1
|
* Merge pull request #1581 from ethereum/fixosxchriseth2017-01-181-2/+2
|\ | | | | Fix JSON output on macos.
| * Fix JSON output on macos.chriseth2017-01-181-2/+2
| |
* | Merge pull request #1397 from roadriverrail/contract_collisionchriseth2017-01-186-46/+65
|\ \ | |/ |/| Error out when contracts collide on name
| * Provide fall-back method for contract lookupRhett Aultman2017-01-171-1/+18
| | | | | | | | | | | | | | | | 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.
| * Remove checkLibraryNameClashes()Rhett Aultman2017-01-172-37/+0
| | | | | | | | | | | | | | | | 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.
| * Use fully-qualified names for linking, tooRhett Aultman2017-01-172-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * Remove unique error for contract collisionRhett Aultman2017-01-171-39/+10
| | | | | | | | | | | | 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.
| * Move fullyQualified() name to DeclarationRhett Aultman2017-01-172-10/+1
| |
| * Stylistic correctionsRhett Aultman2017-01-172-9/+5
| |
| * Push the error instead of throwing itRhett Aultman2017-01-171-10/+34
| | | | | | | | | | | | | | 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.
| * Drop ':' if the source file name is emptyRhett Aultman2017-01-171-1/+2
| | | | | | | | | | | | | | | | 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.
| * Only avoid collision if it's the same fileRhett Aultman2017-01-174-12/+48
| | | | | | | | | | | | | | | | | | @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.