Fortran · 640 bytes Raw Blame History
1 ! Array constructors `[1, 2, 3]`. Used to be silently dropped by
2 ! the lowerer because lower_expr_full had no Expr::ArrayConstructor
3 ! arm — programs that initialized arrays from literals quietly got
4 ! uninitialized stack memory.
5 ! Audit CRITICAL-3.
6 !
7 ! CHECK: 10
8 ! CHECK: 20
9 ! CHECK: 30
10 ! CHECK: 1
11 ! CHECK: 2
12 ! CHECK: 3
13 ! CHECK: 4
14 program array_constructor
15 integer :: a(3)
16 integer :: b(4) = [1, 2, 3, 4]
17
18 ! Assignment form: a = [v0, v1, v2]
19 a = [10, 20, 30]
20 print *, a(1)
21 print *, a(2)
22 print *, a(3)
23
24 ! Initializer form: integer :: b(4) = [...]
25 print *, b(1)
26 print *, b(2)
27 print *, b(3)
28 print *, b(4)
29 end program
30