Files
RedBear-OS/local/recipes/dev/libclc/source/flang/test/Semantics/stmt-func01.f90
T
vasilito cb424d7448 build: static patch-sanity linter (shift-left the malformed-patch class)
verify-patch-sanity.py validates every active recipe .patch has internally-
consistent hunk line counts — catching the 'malformed patch at line N' failure
at commit/CI/preflight time instead of hours into a cook. This cycle hit that
class three times (qtwaylandscanner, sddm, xwayland), each only discovered when
cookbook tried to apply the patch.

Running it across the repo found 29 latent malformed patches (validated against
GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22').
They were harmless only because they sit in vendored recipes (baked, not re-
applied) — but would fail on any version-bump re-derivation. --fix recounts the
hunk headers (body untouched) and repaired all 29.

Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test
(test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats
(empty placeholders, bare-@@ git hunks).
2026-08-01 05:13:02 +03:00

101 lines
3.4 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
! C1577
program main
type t1(k,l)
integer, kind :: k = kind(1)
integer, len :: l = 666
integer(k) n
end type t1
interface
pure integer function ifunc()
end function
end interface
!PORTABILITY: Automatic data object 'x1' should not appear in the specification part of a main program [-Wautomatic-in-main-program]
type(t1(k=4,l=ifunc())) x1
!PORTABILITY: Statement function 'sf1' should not contain an array constructor [-Wstatement-function-extensions]
sf1(n) = sum([(j,j=1,n)])
type(t1) sf2
!PORTABILITY: Statement function 'sf2' should not contain a structure constructor [-Wstatement-function-extensions]
sf2(n) = t1(n)
!PORTABILITY: Statement function 'sf3' should not contain a type parameter inquiry [-Wstatement-function-extensions]
sf3(n) = x1%l
!ERROR: Recursive call to statement function 'sf4' is not allowed
sf4(n) = sf4(n)
!ERROR: Statement function 'sf5' may not reference another statement function 'sf6' that is defined later
sf5(n) = sf6(n)
real sf7
!ERROR: Statement function 'sf6' may not reference another statement function 'sf7' that is defined later
sf6(n) = sf7(n)
!PORTABILITY: Statement function 'sf7' should not reference function 'explicit' that requires an explicit interface [-Wstatement-function-extensions]
sf7(n) = explicit(n)
real :: a(3) = [1., 2., 3.]
!PORTABILITY: Statement function 'sf8' should not pass an array argument that is not a whole array [-Wstatement-function-extensions]
sf8(n) = sum(a(1:2))
sf8a(n) = sum(a) ! ok
integer :: sf9
!ERROR: Defining expression of statement function 'sf9' cannot be converted to its result type INTEGER(4)
sf9(n) = "bad"
!ERROR: Statement function 'sf10' may not reference another statement function 'sf11' that is defined later
sf10(n) = sf11(n)
sf11(n) = sf10(n) ! mutual recursion, caused crash
integer(1) iarg1
!PORTABILITY: nonstandard usage: based POINTER
pointer(iarg1p, iarg1)
sf13(iarg1) = iarg1
! executable part
print *, sf13(iarg1) ! ok
sf14 = 1.
contains
real function explicit(x,y)
integer, intent(in) :: x
integer, intent(in), optional :: y
explicit = x
end function
pure function arr()
real :: arr(2)
arr = [1., 2.]
end function
subroutine foo
!PORTABILITY: An implicitly typed statement function should not appear when the same symbol is available in its host scope [-Wstatement-function-extensions]
sf14(x) = 2.*x
end subroutine
end
subroutine s0
allocatable :: sf
!ERROR: 'sf' is not a callable procedure
sf(x) = 1.
end
subroutine s1
asynchronous :: sf
!ERROR: An entity may not have the ASYNCHRONOUS attribute unless it is a variable
sf(x) = 1.
end
subroutine s2
pointer :: sf
!ERROR: A statement function must not have the POINTER attribute
sf(x) = 1.
end
subroutine s3
save :: sf
!ERROR: The entity 'sf' with an explicit SAVE attribute must be a variable, procedure pointer, or COMMON block
sf(x) = 1.
end
subroutine s4
volatile :: sf
!ERROR: VOLATILE attribute may apply only to a variable
sf(x) = 1.
end
subroutine s5
!ERROR: Invalid specification expression: reference to impure function 'k'
real x(k())
!WARNING: Name 'k' from host scope should have a type declaration before its local statement function definition [-Wstatement-function-extensions]
!ERROR: 'k' is already declared in this scoping unit
k() = 0.0
end