@@ -5,12 +5,14 @@ library L1 {
5
5
}
6
6
7
7
contract C1 {
8
- uint256 internal constant CONST = 20 + L2.INT; // forward reference
8
+ uint256 internal constant CONST = 30 + L1.INT; // backward reference
9
+ uint256 internal constant CONST2 = 30 + L2.INT; // forward reference
9
10
uint256 internal constant LIMIT = MAX * L1.INT; // same file & external library constant
10
11
uint256 internal constant NESTED = LIMIT + CONST; // nested & same contract constant
11
12
12
- uint256 [L1.INT] internal arr1; // error , backward reference
13
+ uint256 [L1.INT] internal arr1; // ok , backward reference
13
14
uint256 [L2.INT] internal arr2; // error, forward reference
15
+ uint256 [CONST2] internal arr3; // error, computed with forward reference
14
16
}
15
17
16
18
contract C2 is C1 {
@@ -20,16 +22,14 @@ contract C2 is C1 {
20
22
contract C3 is C2 {
21
23
uint256 internal constant NESTED_INHERITED = INHERITED + NESTED + CONST * LIMIT; // nest-inherited constants
22
24
23
- uint256 [CONST] internal arr3 ; // error, nest-inherited constants
24
- uint256 [NESTED_INHERITED] internal arr4 ; // error, same contract constant
25
+ uint256 [CONST] internal arr4 ; // nest-inherited constants
26
+ uint256 [NESTED_INHERITED] internal arr5 ; // same contract constant
25
27
}
26
28
27
29
library L2 {
28
30
uint256 internal constant INT = 100 ;
29
31
}
30
32
31
33
// ----
32
- // TypeError 5462: (366-372): Invalid array length, expected integer literal or constant expression.
33
- // TypeError 5462: (430-436): Invalid array length, expected integer literal or constant expression.
34
- // TypeError 5462: (742-747): Invalid array length, expected integer literal or constant expression.
35
- // TypeError 5462: (822-838): Invalid array length, expected integer literal or constant expression.
34
+ // TypeError 5462: (501-507): Invalid array length, expected integer literal or constant expression.
35
+ // TypeError 5462: (564-570): Invalid array length, expected integer literal or constant expression.
0 commit comments