mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix ICE when a constant variable declaration forward references a struct
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
int[L] constant L = 6;
|
||||
// ----
|
||||
// TypeError 5462: (4-5): Invalid array length, expected integer literal or constant expression.
|
||||
// TypeError 9259: (0-21): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -3,3 +3,4 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// TypeError 5462: (21-22): Invalid array length, expected integer literal or constant expression.
|
||||
// TypeError 9259: (17-38): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
mapping(uint => uint) constant b = b;
|
||||
// ----
|
||||
// DeclarationError 3530: (0-36): The type contains a (nested) mapping and therefore cannot be a constant.
|
||||
// TypeError 9259: (0-36): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
struct S { uint x; }
|
||||
S constant s;
|
||||
// ----
|
||||
// TypeError 9259: (21-33): Constants of non-value type not yet implemented.
|
||||
// TypeError 9259: (21-33): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -5,4 +5,4 @@ contract C {
|
||||
S public constant e = 0x1212121212121212121212121212121212121212;
|
||||
}
|
||||
// ----
|
||||
// DeclarationError 3530: (71-135): The type contains a (nested) mapping and therefore cannot be a constant.
|
||||
// TypeError 9259: (71-135): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -3,3 +3,4 @@ contract test {
|
||||
}
|
||||
// ----
|
||||
// DeclarationError 1788: (31-55): The "constant" keyword can only be used for state variables or variables at file level.
|
||||
// TypeError 9259: (31-55): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ contract C {
|
||||
uint[3] constant x = [uint(1), 2, 3];
|
||||
}
|
||||
// ----
|
||||
// TypeError 9259: (17-53): Constants of non-value type not yet implemented.
|
||||
// TypeError 9259: (17-53): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -3,4 +3,4 @@ contract C {
|
||||
S constant x = S(5, new uint[](4));
|
||||
}
|
||||
// ----
|
||||
// TypeError 9259: (52-86): Constants of non-value type not yet implemented.
|
||||
// TypeError 9259: (52-86): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
S constant x;
|
||||
struct S { int y; }
|
||||
// ----
|
||||
// TypeError 9259: (0-12): Only constants of value type and byte arrays are implemented.
|
||||
@@ -2,4 +2,4 @@ contract C {
|
||||
mapping(uint => uint) constant x;
|
||||
}
|
||||
// ----
|
||||
// DeclarationError 3530: (17-49): The type contains a (nested) mapping and therefore cannot be a constant.
|
||||
// TypeError 9259: (17-49): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -5,4 +5,4 @@ contract C {
|
||||
S public constant c;
|
||||
}
|
||||
// ----
|
||||
// DeclarationError 3530: (71-90): The type contains a (nested) mapping and therefore cannot be a constant.
|
||||
// TypeError 9259: (71-90): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
@@ -3,3 +3,4 @@ contract Foo {
|
||||
}
|
||||
// ----
|
||||
// DeclarationError 1788: (30-55): The "constant" keyword can only be used for state variables or variables at file level.
|
||||
// TypeError 9259: (30-55): Only constants of value type and byte arrays are implemented.
|
||||
|
||||
Reference in New Issue
Block a user