Index: flang/lib/Semantics/expression.cpp =================================================================== --- flang/lib/Semantics/expression.cpp +++ flang/lib/Semantics/expression.cpp @@ -3140,6 +3140,13 @@ if (auto *func{ std::get_if>(&u)}) { parser::FunctionReference &funcRef{func->value()}; + // Ensure that there are no argument keywords + for (const auto &arg : + std::get>(funcRef.v.t)) { + if (std::get>(arg.t)) { + return; + } + } auto &proc{std::get(funcRef.v.t)}; if (Symbol *origSymbol{ common::visit(common::visitors{ Index: flang/test/Semantics/call32.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/call32.f90 @@ -0,0 +1,8 @@ +! RUN: %python %S/test_errors.py %s %flang_fc1 -Werror +! Ensure that a seemingly misparsed function reference is +! not converted to an array references of the same name if +! there's an argument keyword. +real array(1) +!ERROR: 'array' is not a callable procedure +print *, array(argument=1) +end