diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp index 709f2e6c85bb2..d64a008e3db84 100644 --- a/flang/lib/Evaluate/intrinsics.cpp +++ b/flang/lib/Evaluate/intrinsics.cpp @@ -1587,8 +1587,8 @@ static const IntrinsicInterface intrinsicSubroutine[]{ {"get_command", {{"command", DefaultChar, Rank::scalar, Optionality::optional, common::Intent::Out}, - {"length", AnyInt, Rank::scalar, Optionality::optional, - common::Intent::Out}, + {"length", TypePattern{IntType, KindCode::greaterOrEqualToKind, 2}, + Rank::scalar, Optionality::optional, common::Intent::Out}, {"status", AnyInt, Rank::scalar, Optionality::optional, common::Intent::Out}, {"errmsg", DefaultChar, Rank::scalar, Optionality::optional, @@ -1598,8 +1598,8 @@ static const IntrinsicInterface intrinsicSubroutine[]{ {{"number", AnyInt, Rank::scalar}, {"value", DefaultChar, Rank::scalar, Optionality::optional, common::Intent::Out}, - {"length", AnyInt, Rank::scalar, Optionality::optional, - common::Intent::Out}, + {"length", TypePattern{IntType, KindCode::greaterOrEqualToKind, 2}, + Rank::scalar, Optionality::optional, common::Intent::Out}, {"status", AnyInt, Rank::scalar, Optionality::optional, common::Intent::Out}, {"errmsg", DefaultChar, Rank::scalar, Optionality::optional, diff --git a/flang/test/Semantics/command.f90 b/flang/test/Semantics/command.f90 new file mode 100644 index 0000000000000..b5f24cddbd052 --- /dev/null +++ b/flang/test/Semantics/command.f90 @@ -0,0 +1,30 @@ +! RUN: %python %S/test_errors.py %s %flang_fc1 +program command + implicit none + Integer(1) :: i1 + Integer(2) :: i2 + Integer(4) :: i4 + Integer(8) :: i8 + Integer(16) :: i16 + Integer :: a + !ERROR: Actual argument for 'length=' has bad type or kind 'INTEGER(1)' + call get_command(length=i1) + !OK: + call get_command(length=i2) + !OK: + call get_command(length=i4) + !OK: + call get_command(length=i8) + !OK: + call get_command(length=i16) + !ERROR: Actual argument for 'length=' has bad type or kind 'INTEGER(1)' + call get_command_argument(number=a,length=i1) + !OK: + call get_command_argument(number=a,length=i2) + !OK: + call get_command_argument(number=a,length=i4) + !OK: + call get_command_argument(number=a,length=i8) + !OK: + call get_command_argument(number=a,length=i16) +end program \ No newline at end of file