Fortran: fix order of checks for the SHAPE intrinsic
gcc/fortran/ChangeLog: PR fortran/102716 * check.c (gfc_check_shape): Reorder checks so that invalid KIND arguments can be detected. gcc/testsuite/ChangeLog: PR fortran/102716 * gfortran.dg/shape_10.f90: New test.
This commit is contained in:
parent
f0b7d4cc49
commit
1b115daf62
@ -5086,6 +5086,13 @@ gfc_check_shape (gfc_expr *source, gfc_expr *kind)
|
||||
if (gfc_invalid_null_arg (source))
|
||||
return false;
|
||||
|
||||
if (!kind_check (kind, 1, BT_INTEGER))
|
||||
return false;
|
||||
if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic "
|
||||
"with KIND argument at %L",
|
||||
gfc_current_intrinsic, &kind->where))
|
||||
return false;
|
||||
|
||||
if (source->rank == 0 || source->expr_type != EXPR_VARIABLE)
|
||||
return true;
|
||||
|
||||
@ -5098,13 +5105,6 @@ gfc_check_shape (gfc_expr *source, gfc_expr *kind)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!kind_check (kind, 1, BT_INTEGER))
|
||||
return false;
|
||||
if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic "
|
||||
"with KIND argument at %L",
|
||||
gfc_current_intrinsic, &kind->where))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
6
gcc/testsuite/gfortran.dg/shape_10.f90
Normal file
6
gcc/testsuite/gfortran.dg/shape_10.f90
Normal file
@ -0,0 +1,6 @@
|
||||
! { dg-do compile }
|
||||
! PR fortran/102716
|
||||
|
||||
program p
|
||||
integer, parameter :: a(1) = shape([2], [1]) ! { dg-error "must be a scalar" }
|
||||
end
|
Loading…
Reference in New Issue
Block a user