Lines Matching full:semantics
17 #include "flang/Semantics/scope.h"
18 #include "flang/Semantics/symbol.h"
19 #include "flang/Semantics/tools.h"
30 static void CopyAttrs(const semantics::Symbol &src, A &dst,
31 const std::initializer_list<std::pair<semantics::Attr, B>> &pairs) {
86 const semantics::Symbol &symbol, FoldingContext &context,
91 [&](const semantics::ProcEntityDetails &proc) {
101 [&](const semantics::AssocEntityDetails &assoc) {
104 [&](const semantics::ProcBindingDetails &binding) {
109 if constexpr (std::is_same_v<Ty, semantics::EntityDetails> ||
110 std::is_same_v<Ty, semantics::ObjectEntityDetails> ||
111 std::is_same_v<Ty, semantics::TypeParamDetails>) {
112 if (const semantics::DeclTypeSpec * type{ultimate.GetType()}) {
132 const semantics::AssocEntityDetails &assoc, FoldingContext &context,
155 const semantics::DeclTypeSpec &spec, FoldingContext &context,
222 void TypeAndShape::AcquireAttrs(const semantics::Symbol &symbol) {
227 } else if (semantics::IsAssumedSizeArray(symbol)) {
234 symbol.GetUltimate().detailsIf<semantics::ObjectEntityDetails>()};
246 void TypeAndShape::AcquireLEN(const semantics::Symbol &symbol) {
381 static common::Intent GetIntent(const semantics::Attrs &attrs) {
382 if (attrs.test(semantics::Attr::INTENT_IN)) {
384 } else if (attrs.test(semantics::Attr::INTENT_OUT)) {
386 } else if (attrs.test(semantics::Attr::INTENT_INOUT)) {
394 const semantics::Symbol &symbol, FoldingContext &context) {
395 if (const auto *object{symbol.detailsIf<semantics::ObjectEntityDetails>()};
396 object || symbol.has<semantics::EntityDetails>()) {
400 using semantics::Attr;
418 semantics::IsCUDADeviceContext(&symbol.owner())) {
567 const semantics::UnorderedSymbolSet &seenProcs) {
569 auto ordered{semantics::OrderBySourcePosition(seenProcs)};
583 const semantics::Symbol &symbol, FoldingContext &context,
584 semantics::UnorderedSymbolSet seenProcs);
586 const semantics::Symbol &symbol, FoldingContext &context,
587 semantics::UnorderedSymbolSet seenProcs, bool emitError);
590 const semantics::Symbol &original, FoldingContext &context,
591 semantics::UnorderedSymbolSet seenProcs, bool emitError) {
611 [&](const semantics::SubprogramDetails &subp)
624 for (const semantics::Symbol *arg : subp.dummyArgs()) {
642 [&](const semantics::ProcEntityDetails &proc)
644 if (symbol.attrs().test(semantics::Attr::INTRINSIC)) {
649 // declaration checking in Semantics.
657 if (const semantics::Symbol *
671 const semantics::DeclTypeSpec *type{proc.type()};
672 if (symbol.test(semantics::Symbol::Flag::Subroutine)) {
685 } else if (symbol.test(semantics::Symbol::Flag::Function)) {
692 [&](const semantics::ProcBindingDetails &binding) {
695 if (binding.symbol().attrs().test(semantics::Attr::INTRINSIC)) {
698 if (!symbol.attrs().test(semantics::Attr::NOPASS)) {
712 [&](const semantics::UseDetails &use) {
716 [](const semantics::UseErrorDetails &) {
721 [&](const semantics::HostAssocDetails &assoc) {
725 [&](const semantics::GenericDetails &generic) {
726 if (const semantics::Symbol * specific{generic.specific()}) {
733 [&](const semantics::EntityDetails &x) {
737 [&](const semantics::SubprogramNameDetails &) {
738 if (const semantics::Symbol *
753 if (result && !symbol.has<semantics::ProcBindingDetails>()) {
756 {semantics::Attr::BIND_C, Procedure::Attr::BindC},
760 {semantics::Attr::ELEMENTAL, Procedure::Attr::Elemental},
772 const semantics::Symbol &symbol, FoldingContext &context,
773 semantics::UnorderedSymbolSet seenProcs) {
784 {semantics::Attr::OPTIONAL, DummyProcedure::Attr::Optional},
785 {semantics::Attr::POINTER, DummyProcedure::Attr::Pointer},
842 const semantics::Symbol &symbol, FoldingContext &context,
843 semantics::UnorderedSymbolSet seenProcs) {
845 if (symbol.has<semantics::ObjectEntityDetails>() ||
846 symbol.has<semantics::EntityDetails>()) {
1011 const semantics::Symbol &symbol, FoldingContext &context,
1012 semantics::UnorderedSymbolSet seenProcs, bool emitError) {
1013 if (const auto *object{symbol.detailsIf<semantics::ObjectEntityDetails>()}) {
1019 {semantics::Attr::ALLOCATABLE, FunctionResult::Attr::Allocatable},
1020 {semantics::Attr::CONTIGUOUS, FunctionResult::Attr::Contiguous},
1021 {semantics::Attr::POINTER, FunctionResult::Attr::Pointer},
1037 semantics::UnorderedSymbolSet seenProcs;
1392 const semantics::Symbol &symbol, FoldingContext &context) {
1393 semantics::UnorderedSymbolSet seenProcs;
1400 semantics::UnorderedSymbolSet seenProcs;