mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix declaration suggestion for var with different number of components
This commit is contained in:
parent
0b20e4fd22
commit
83e6c34526
@ -1038,7 +1038,10 @@ string createTupleDecl(vector<ASTPointer<VariableDeclaration>> const& _decls)
|
|||||||
vector<string> components;
|
vector<string> components;
|
||||||
for (ASTPointer<VariableDeclaration> const& decl: _decls)
|
for (ASTPointer<VariableDeclaration> const& decl: _decls)
|
||||||
if (decl)
|
if (decl)
|
||||||
|
{
|
||||||
|
solAssert(decl->annotation().type, "");
|
||||||
components.emplace_back(decl->annotation().type->toString(false) + " " + decl->name());
|
components.emplace_back(decl->annotation().type->toString(false) + " " + decl->name());
|
||||||
|
}
|
||||||
else
|
else
|
||||||
components.emplace_back();
|
components.emplace_back();
|
||||||
|
|
||||||
@ -1056,6 +1059,9 @@ bool typeCanBeExpressed(vector<ASTPointer<VariableDeclaration>> const& decls)
|
|||||||
if (!decl)
|
if (!decl)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (!decl->annotation().type)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (auto functionType = dynamic_cast<FunctionType const*>(decl->annotation().type.get()))
|
if (auto functionType = dynamic_cast<FunctionType const*>(decl->annotation().type.get()))
|
||||||
if (
|
if (
|
||||||
functionType->kind() != FunctionType::Kind::Internal &&
|
functionType->kind() != FunctionType::Kind::Internal &&
|
||||||
|
@ -12,6 +12,10 @@ contract C {
|
|||||||
var myblockhash = block.blockhash;
|
var myblockhash = block.blockhash;
|
||||||
var (a, b) = (2, "troi");
|
var (a, b) = (2, "troi");
|
||||||
var (x,, z) = h();
|
var (x,, z) = h();
|
||||||
|
var (c, d) = ("");
|
||||||
|
var (k, l) = (2);
|
||||||
|
var (m, n) = 1;
|
||||||
|
var (o, p) = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
@ -21,3 +25,11 @@ contract C {
|
|||||||
// SyntaxError: (293-326): Use of the "var" keyword is disallowed. Type cannot be expressed in syntax.
|
// SyntaxError: (293-326): Use of the "var" keyword is disallowed. Type cannot be expressed in syntax.
|
||||||
// SyntaxError: (336-360): Use of the "var" keyword is disallowed. Use explicit declaration `(uint8 a, string memory b) = ...´ instead.
|
// SyntaxError: (336-360): Use of the "var" keyword is disallowed. Use explicit declaration `(uint8 a, string memory b) = ...´ instead.
|
||||||
// SyntaxError: (370-387): Use of the "var" keyword is disallowed. Use explicit declaration `(uint256 x, , uint256 z) = ...´ instead.
|
// SyntaxError: (370-387): Use of the "var" keyword is disallowed. Use explicit declaration `(uint256 x, , uint256 z) = ...´ instead.
|
||||||
|
// TypeError: (397-414): Different number of components on the left hand side (2) than on the right hand side (1).
|
||||||
|
// SyntaxError: (397-414): Use of the "var" keyword is disallowed. Type cannot be expressed in syntax.
|
||||||
|
// TypeError: (424-440): Different number of components on the left hand side (2) than on the right hand side (1).
|
||||||
|
// SyntaxError: (424-440): Use of the "var" keyword is disallowed. Type cannot be expressed in syntax.
|
||||||
|
// TypeError: (450-464): Different number of components on the left hand side (2) than on the right hand side (1).
|
||||||
|
// SyntaxError: (450-464): Use of the "var" keyword is disallowed. Type cannot be expressed in syntax.
|
||||||
|
// TypeError: (474-489): Different number of components on the left hand side (2) than on the right hand side (1).
|
||||||
|
// SyntaxError: (474-489): Use of the "var" keyword is disallowed. Type cannot be expressed in syntax.
|
||||||
|
Loading…
Reference in New Issue
Block a user