cb424d7448
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).
81 lines
2.9 KiB
Fortran
81 lines
2.9 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
subroutine s1(x, y)
|
|
!ERROR: Array pointer 'x' must have deferred shape or assumed rank
|
|
real, pointer :: x(1:) ! C832
|
|
!ERROR: Allocatable array 'y' must have deferred shape or assumed rank
|
|
real, dimension(1:,1:), allocatable :: y ! C832
|
|
end
|
|
|
|
subroutine s2(a, b, c)
|
|
real :: a(:,1:)
|
|
real :: b(10,*)
|
|
real :: c(..)
|
|
!ERROR: Array pointer 'd' must have deferred shape or assumed rank
|
|
real, pointer :: d(:,1:) ! C832
|
|
!ERROR: Allocatable array 'e' must have deferred shape or assumed rank
|
|
real, allocatable :: e(10,*) ! C832
|
|
!ERROR: Assumed-rank array 'f' must be a dummy argument
|
|
real, pointer :: f(..) ! C837
|
|
!ERROR: Assumed-shape array 'g' must be a dummy argument
|
|
real :: g(:,1:)
|
|
!ERROR: Assumed-size array 'h' must be a dummy argument
|
|
real :: h(10,*) ! C833
|
|
!ERROR: Assumed-rank array 'i' must be a dummy argument
|
|
real :: i(..) ! C837
|
|
end
|
|
|
|
subroutine s3(a, b)
|
|
real :: a(*)
|
|
!ERROR: Dummy array argument 'b' may not have implied shape
|
|
real :: b(*,*) ! C835, C836
|
|
!ERROR: Implied-shape array 'c' must be a named constant or a dummy argument
|
|
real :: c(*) ! C836
|
|
!ERROR: Named constant 'd' array must have constant or implied shape
|
|
integer, parameter :: d(:) = [1, 2, 3]
|
|
end
|
|
|
|
subroutine s4()
|
|
type :: t
|
|
integer, allocatable :: a(:)
|
|
!ERROR: Component array 'b' without ALLOCATABLE or POINTER attribute must have explicit shape
|
|
integer :: b(:) ! C749
|
|
real, dimension(1:10) :: c
|
|
!ERROR: Array pointer component 'd' must have deferred shape
|
|
real, pointer, dimension(1:10) :: d ! C745
|
|
end type
|
|
end
|
|
|
|
function f()
|
|
!ERROR: Array 'f' without ALLOCATABLE or POINTER attribute must have explicit shape
|
|
real, dimension(:) :: f ! C832
|
|
end
|
|
|
|
subroutine s5()
|
|
!ERROR: Allocatable array 'a' must have deferred shape or assumed rank
|
|
integer :: a(10), b(:)
|
|
allocatable :: a
|
|
allocatable :: b
|
|
end subroutine
|
|
|
|
subroutine s6()
|
|
!C835 An object whose array bounds are specified by an
|
|
! implied-shape-or-assumed-size-spec shall be a dummy data object or a named
|
|
! constant.
|
|
!
|
|
!C843 An entity with the INTENT attribute shall be a dummy data object or a
|
|
! dummy procedure pointer.
|
|
!
|
|
!C849 An entity with the OPTIONAL attribute shall be a dummy argument.
|
|
|
|
!ERROR: Implied-shape array 'local1' must be a named constant or a dummy argument
|
|
real, dimension (*) :: local1
|
|
!WARNING: Only a dummy argument should have an INTENT, VALUE, or OPTIONAL attribute [-Wignore-irrelevant-attributes]
|
|
real, intent(in) :: local2
|
|
!WARNING: Only a dummy argument should have an INTENT, VALUE, or OPTIONAL attribute [-Wignore-irrelevant-attributes]
|
|
procedure(), intent(in) :: p1
|
|
!WARNING: Only a dummy argument should have an INTENT, VALUE, or OPTIONAL attribute [-Wignore-irrelevant-attributes]
|
|
real, optional :: local3
|
|
!WARNING: Only a dummy argument should have an INTENT, VALUE, or OPTIONAL attribute [-Wignore-irrelevant-attributes]
|
|
procedure(), optional :: p2
|
|
end subroutine
|