Lines Matching full:semantics
15 #include "flang/Semantics/semantics.h"
16 #include "flang/Semantics/symbol.h"
17 #include "flang/Semantics/tools.h"
46 return INVARIANT || semantics::IsKindTypeParameter(inq.parameter());
48 bool operator()(const semantics::Symbol &symbol) const {
52 ultimate.has<semantics::TypeParamDetails>() ||
54 !symbol.attrs().test(semantics::Attr::VALUE));
57 bool operator()(const semantics::ParamValue ¶m) const {
90 !sym.attrs().test(semantics::Attr::VALUE)));
237 bool operator()(const semantics::Symbol &symbol) {
241 ultimate.detailsIf<semantics::AssocEntityDetails>()}) {
255 } else if (!ultimate.attrs().test(semantics::Attr::TARGET)) {
321 bool CheckVarOrComponent(const semantics::Symbol &symbol) {
357 bool IsInitialProcedureTarget(const semantics::Symbol &symbol) {
361 [&](const semantics::SubprogramDetails &subp) {
363 symbol.owner().kind() != semantics::Scope::Kind::MainProgram &&
364 symbol.owner().kind() != semantics::Scope::Kind::Subprogram;
366 [](const semantics::SubprogramNameDetails &x) {
367 return x.kind() != semantics::SubprogramKind::Internal;
369 [&](const semantics::ProcEntityDetails &proc) {
370 return !semantics::IsPointer(ultimate) && !proc.isDummy();
401 const semantics::Scope *instantiation) {
520 explicit CheckSpecificationExprHelper(const semantics::Scope &s,
528 Result operator()(const semantics::Symbol &symbol) const {
530 const auto *object{ultimate.detailsIf<semantics::ObjectEntityDetails>()};
531 bool isInitialized{semantics::IsSaved(ultimate) &&
536 ultimate.detailsIf<semantics::AssocEntityDetails>()}) {
538 } else if (semantics::IsNamedConstant(ultimate) ||
550 } else if (ultimate.attrs().test(semantics::Attr::OPTIONAL)) {
554 ultimate.attrs().test(semantics::Attr::INTENT_OUT)) {
557 } else if (ultimate.has<semantics::ObjectEntityDetails>()) {
576 ultimate.detailsIf<semantics::ObjectEntityDetails>()}) {
650 if (!semantics::IsPureProcedure(ultimate)) {
654 if (semantics::IsStmtFunction(ultimate)) {
677 // References to internal functions are caught in expression semantics.
743 const semantics::Scope &scope_;
752 bool IsInquiryAlwaysPermissible(const semantics::Symbol &) const;
753 bool IsPermissibleInquiry(const semantics::Symbol &firstSymbol,
754 const semantics::Symbol &lastSymbol,
759 const semantics::Symbol &symbol) const {
760 if (&symbol.owner() != &scope_ || symbol.has<semantics::UseDetails>() ||
761 symbol.owner().kind() == semantics::Scope::Kind::Module ||
762 semantics::FindCommonBlockContaining(symbol) ||
763 symbol.has<semantics::HostAssocDetails>()) {
765 } else if (semantics::IsDummy(symbol) && !forElementalFunctionResult_) {
773 const semantics::Symbol &firstSymbol, const semantics::Symbol &lastSymbol,
785 const auto *object{lastSymbol.detailsIf<semantics::ObjectEntityDetails>()};
793 object->type()->category() == semantics::DeclTypeSpec::Character &&
800 void CheckSpecificationExpr(const A &x, const semantics::Scope &scope,
812 const semantics::Scope &, FoldingContext &,
815 const semantics::Scope &, FoldingContext &,
818 const semantics::Scope &, FoldingContext &,
821 const semantics::Scope &, FoldingContext &,
824 const semantics::Scope &, FoldingContext &,
827 const std::optional<Expr<SubscriptInteger>> &, const semantics::Scope &,
843 Result operator()(const semantics::Symbol &symbol) const {
845 if (ultimate.attrs().test(semantics::Attr::CONTIGUOUS)) {
855 ultimate.detailsIf<semantics::AssocEntityDetails>()}) {
862 } else if (semantics::IsPointer(ultimate) ||
863 semantics::IsAssumedShape(ultimate) || IsAssumedRank(ultimate)) {
865 } else if (ultimate.has<semantics::ObjectEntityDetails>()) {
1213 ultimate.detailsIf<semantics::SubprogramDetails>()}) {