defaultsToSameKind, // for MatchingDefaultKIND
defaultsToSizeKind, // for SizeDefaultKIND
defaultsToDefaultForResult, // for DefaultingKIND
-)
+ notAssumedSize)
struct IntrinsicDummyArgument {
const char *keyword{nullptr};
Rank::scalar, IntrinsicClass::inquiryFunction},
{"spacing", {{"x", SameReal}}, SameReal},
{"spread",
- {{"source", SameType, Rank::known}, RequiredDIM,
- {"ncopies", AnyInt, Rank::scalar}},
+ {{"source", SameType, Rank::known, Optionality::required,
+ common::Intent::In, {ArgFlag::notAssumedSize}},
+ RequiredDIM, {"ncopies", AnyInt, Rank::scalar}},
SameType, Rank::rankPlus1, IntrinsicClass::transformationalFunction},
{"sqrt", {{"x", SameFloating}}, SameFloating},
{"stopped_images", {OptionalTEAM, SizeDefaultKIND}, KINDInt, Rank::vector,
{}, Rank::elemental, IntrinsicClass::impureSubroutine},
{"random_number",
{{"harvest", AnyReal, Rank::known, Optionality::required,
- common::Intent::Out}},
+ common::Intent::Out, {ArgFlag::notAssumedSize}}},
{}, Rank::elemental, IntrinsicClass::impureSubroutine},
{"random_seed",
{{"size", DefaultInt, Rank::scalar, Optionality::optional,
}
}
}
+ if (d.flags.test(ArgFlag::notAssumedSize)) {
+ if (auto named{ExtractNamedEntity(*arg)}) {
+ if (semantics::IsAssumedSizeArray(named->GetLastSymbol())) {
+ messages.Say(arg->sourceLocation(),
+ "The '%s=' argument to the intrinsic procedure '%s' may not be assumed-size"_err_en_US,
+ d.keyword, name);
+ return std::nullopt;
+ }
+ }
+ }
if (arg->GetAssumedTypeDummy()) {
// TYPE(*) assumed-type dummy argument forwarded to intrinsic
if (d.typePattern.categorySet == AnyType &&
if (semantics::IsAssumedSizeArray(named->GetLastSymbol())) {
if (strcmp(name, "shape") == 0) {
messages.Say(arg->sourceLocation(),
- "The '%s=' argument to the intrinsic function '%s' may not be assumed-size"_err_en_US,
- d.keyword, name);
+ "The 'source=' argument to the intrinsic function 'shape' may not be assumed-size"_err_en_US);
} else {
messages.Say(arg->sourceLocation(),
"A dim= argument is required for '%s' when the array is assumed-size"_err_en_US,