mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Update message of TypeError 5172
This commit is contained in:
parent
c6ad99c3b1
commit
e001f8346b
@ -190,7 +190,7 @@ void DeclarationTypeChecker::endVisit(UserDefinedTypeName const& _typeName)
|
||||
m_errorReporter.fatalTypeError(
|
||||
5172_error,
|
||||
_typeName.location(),
|
||||
"Name has to refer to a struct, enum or contract."
|
||||
"Name has to refer to a user-defined value type, struct, enum or contract."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -3982,7 +3982,7 @@ void TypeChecker::endVisit(UsingForDirective const& _usingFor)
|
||||
path->location(),
|
||||
"The function \"" + joinHumanReadable(path->path(), ".") + "\" "+
|
||||
"needs to return exactly one value of type " +
|
||||
functionType->parameterTypesIncludingSelf().front()->humanReadableName() +
|
||||
functionType->parameterTypesIncludingSelf().front()->canonicalName() +
|
||||
" to be used for the operator " +
|
||||
TokenTraits::friendlyName(*operator_) +
|
||||
"."
|
||||
|
@ -1,4 +1,4 @@
|
||||
error E(uint);
|
||||
function f(E x) pure returns (uint) {}
|
||||
// ----
|
||||
// TypeError 5172: (26-27): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (26-27): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -9,4 +9,4 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (91-92): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (91-92): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -4,4 +4,4 @@ contract C {
|
||||
E x;
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (29-30): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (29-30): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -6,4 +6,4 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (64-65): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (64-65): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -2,4 +2,4 @@ contract C {
|
||||
function ( uint ) external returns ( a [ ] calldata ) public a = ( 1 / 2 ) ;
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (58-59): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (58-59): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -6,4 +6,4 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (77-80): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (77-80): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -7,4 +7,4 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (77-80): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (77-80): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -7,4 +7,4 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (85-88): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (85-88): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -1,9 +1,18 @@
|
||||
type Int is int128;
|
||||
|
||||
struct S {
|
||||
int128 i;
|
||||
}
|
||||
|
||||
using {
|
||||
add as +, sub as -,
|
||||
mul as *, div as /
|
||||
} for Int;
|
||||
|
||||
using {
|
||||
bitor as |
|
||||
} for S;
|
||||
|
||||
function add(Int, Int) pure returns (Int) {
|
||||
return Int.wrap(1);
|
||||
}
|
||||
@ -19,7 +28,14 @@ function mul(int128, int256) pure returns (Int) {
|
||||
function div(Int, Int) pure returns (int256) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
function bitor(S storage, S storage) pure returns (S memory) {
|
||||
return S(1);
|
||||
}
|
||||
|
||||
|
||||
// ----
|
||||
// TypeError 3100: (42-45): The function "sub" cannot be bound to the type "Int" because the type cannot be implicitly converted to the first argument of the function ("int128").
|
||||
// TypeError 3100: (56-59): The function "mul" cannot be bound to the type "Int" because the type cannot be implicitly converted to the first argument of the function ("int128").
|
||||
// TypeError 7743: (66-69): The function "div" needs to return exactly one value of type Int to be used for the operator /.
|
||||
// TypeError 3100: (71-74): The function "sub" cannot be bound to the type "Int" because the type cannot be implicitly converted to the first argument of the function ("int128").
|
||||
// TypeError 3100: (85-88): The function "mul" cannot be bound to the type "Int" because the type cannot be implicitly converted to the first argument of the function ("int128").
|
||||
// TypeError 7743: (95-98): The function "div" needs to return exactly one value of type Int to be used for the operator /.
|
||||
// TypeError 7743: (128-133): The function "bitor" needs to return exactly one value of type S to be used for the operator |.
|
||||
|
@ -17,4 +17,4 @@ contract C {
|
||||
// Warning 2519: (207-226): This declaration shadows an existing declaration.
|
||||
// Warning 2519: (228-254): This declaration shadows an existing declaration.
|
||||
// Warning 2519: (314-327): This declaration shadows an existing declaration.
|
||||
// TypeError 5172: (104-114): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (104-114): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -17,4 +17,4 @@ contract C {
|
||||
// Warning 2519: (249-268): This declaration shadows an existing declaration.
|
||||
// Warning 2519: (270-296): This declaration shadows an existing declaration.
|
||||
// Warning 2519: (317-330): This declaration shadows an existing declaration.
|
||||
// TypeError 5172: (124-134): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (124-134): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -4,4 +4,4 @@ contract C {
|
||||
function g(function(S memory) external) public {}
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (50-51): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (50-51): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
@ -4,4 +4,4 @@ contract C {
|
||||
|
||||
}
|
||||
// ----
|
||||
// TypeError 5172: (77-78): Name has to refer to a struct, enum or contract.
|
||||
// TypeError 5172: (77-78): Name has to refer to a user-defined value type, struct, enum or contract.
|
||||
|
Loading…
Reference in New Issue
Block a user