mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix crash related to `using for
` without a library.
This commit is contained in:
parent
d270879c8f
commit
ec82706396
@ -13,6 +13,7 @@ Bugfixes:
|
||||
* Assembly Parser: Be more strict about number literals.
|
||||
* Parser: Enforce commas between array and tuple elements.
|
||||
* Parser: Limit maximum recursion depth.
|
||||
* Type Checker: Crash fix related to ``using``.
|
||||
* Type Checker: Disallow constructors in libraries.
|
||||
|
||||
### 0.4.15 (2017-08-08)
|
||||
|
@ -463,7 +463,7 @@ void TypeChecker::endVisit(UsingForDirective const& _usingFor)
|
||||
_usingFor.libraryName().annotation().referencedDeclaration
|
||||
);
|
||||
if (!library || !library->isLibrary())
|
||||
m_errorReporter.typeError(_usingFor.libraryName().location(), "Library name expected.");
|
||||
m_errorReporter.fatalTypeError(_usingFor.libraryName().location(), "Library name expected.");
|
||||
}
|
||||
|
||||
bool TypeChecker::visit(StructDefinition const& _struct)
|
||||
|
@ -6657,6 +6657,21 @@ BOOST_AUTO_TEST_CASE(library_function_without_implementation)
|
||||
CHECK_ERROR(text, TypeError, "Internal library function must be implemented if declared.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(using_for_with_non_library)
|
||||
{
|
||||
// This tests a crash that was resolved by making the first error fatal.
|
||||
char const* text = R"(
|
||||
library L {
|
||||
struct S { uint d; }
|
||||
using S for S;
|
||||
function f(S _s) internal {
|
||||
_s.d = 1;
|
||||
}
|
||||
}
|
||||
)";
|
||||
CHECK_ERROR(text, TypeError, "Library name expected.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(experimental_pragma)
|
||||
{
|
||||
char const* text = R"(
|
||||
|
Loading…
Reference in New Issue
Block a user