Lines Matching full:association
228 GenerateEnumClass(associations, OS, "Association", in EmitDirectivesDecl()
269 OS << "Association getDirectiveAssociation(Directive D);\n"; in EmitDirectivesDecl()
620 enum struct Association { in GenerateGetDirectiveAssociation() enum
633 auto getAssocValue = [](StringRef name) -> Association { in GenerateGetDirectiveAssociation()
634 return StringSwitch<Association>(name) in GenerateGetDirectiveAssociation()
635 .Case("AS_Block", Association::Block) in GenerateGetDirectiveAssociation()
636 .Case("AS_Declaration", Association::Declaration) in GenerateGetDirectiveAssociation()
637 .Case("AS_Delimited", Association::Delimited) in GenerateGetDirectiveAssociation()
638 .Case("AS_Loop", Association::Loop) in GenerateGetDirectiveAssociation()
639 .Case("AS_None", Association::None) in GenerateGetDirectiveAssociation()
640 .Case("AS_Separating", Association::Separating) in GenerateGetDirectiveAssociation()
641 .Case("AS_FromLeaves", Association::FromLeaves) in GenerateGetDirectiveAssociation()
642 .Default(Association::Invalid); in GenerateGetDirectiveAssociation()
645 auto getAssocName = [&](Association A) -> StringRef { in GenerateGetDirectiveAssociation()
646 if (A != Association::Invalid && A != Association::FromLeaves) { in GenerateGetDirectiveAssociation()
653 llvm_unreachable("Unexpected association value"); in GenerateGetDirectiveAssociation()
662 auto reduce = [&](Association A, Association B) -> Association { in GenerateGetDirectiveAssociation()
670 if (A == Association::None || A == B) in GenerateGetDirectiveAssociation()
672 if (A == Association::Block && B == Association::Loop) in GenerateGetDirectiveAssociation()
674 if (A == Association::Loop && B == Association::Block) in GenerateGetDirectiveAssociation()
676 return Association::Invalid; in GenerateGetDirectiveAssociation()
679 llvm::DenseMap<const Record *, Association> AsMap; in GenerateGetDirectiveAssociation()
681 auto compAssocImpl = [&](const Record *R, auto &&Self) -> Association { in GenerateGetDirectiveAssociation()
686 Association AS = getAssocValue(D.getAssociation()->getName()); in GenerateGetDirectiveAssociation()
687 if (AS == Association::Invalid) { in GenerateGetDirectiveAssociation()
689 "has an unrecognized value for association: '" + in GenerateGetDirectiveAssociation()
692 if (AS != Association::FromLeaves) { in GenerateGetDirectiveAssociation()
696 // Compute the association from leaf constructs. in GenerateGetDirectiveAssociation()
701 "requests association to be computed from leaves, " in GenerateGetDirectiveAssociation()
705 Association Result = Self(leaves[0], Self); in GenerateGetDirectiveAssociation()
707 Association A = Self(leaves[I], Self); in GenerateGetDirectiveAssociation()
708 Association R = reduce(Result, A); in GenerateGetDirectiveAssociation()
709 if (R == Association::Invalid) { in GenerateGetDirectiveAssociation()
711 "has leaves with incompatible association values: " + in GenerateGetDirectiveAssociation()
717 assert(Result != Association::Invalid); in GenerateGetDirectiveAssociation()
718 assert(Result != Association::FromLeaves); in GenerateGetDirectiveAssociation()
737 std::string("llvm::") + DirLang.getCppNamespace().str() + "::Association"; in GenerateGetDirectiveAssociation()