Lines Matching full:instantiation
448 // finds a non-dependent member or member of the current instantiation that
766 NamedDecl *Instantiation,
772 assert(isa<TagDecl>(Instantiation) || isa<FunctionDecl>(Instantiation) ||
773 isa<VarDecl>(Instantiation));
798 if (TagDecl *TD = dyn_cast<TagDecl>(Instantiation))
807 Instantiation->setInvalidDecl();
809 if (isa<FunctionDecl>(Instantiation)) {
812 << /*member function*/ 1 << Instantiation->getDeclName()
813 << Instantiation->getDeclContext();
816 assert(isa<TagDecl>(Instantiation) && "Must be a TagDecl!");
823 if (isa<FunctionDecl>(Instantiation)) {
828 } else if (isa<TagDecl>(Instantiation)) {
834 assert(isa<VarDecl>(Instantiation) && "Must be a VarDecl!");
835 if (isa<VarTemplateSpecializationDecl>(Instantiation)) {
838 << Instantiation;
839 Instantiation->setInvalidDecl();
843 << /*static data member*/ 2 << Instantiation->getDeclName()
844 << Instantiation->getDeclContext();
849 // In general, Instantiation isn't marked invalid to get more than one
854 Instantiation->setInvalidDecl();
1422 // used during instantiation, so that should be OK. (Using the
1848 // now that we know what the current instantiation is.
1982 // specialization or explicit instantiation of a class template,
3412 // This might work out to be a current instantiation, in which
4004 // also do them during instantiation.
4094 // instantiation to take place, in every translation unit in which such a
4224 // instantiation is generated from that specialization.
4261 // -- If no match is found, the instantiation is generated
4443 // either be transformed in an instantiation or be diagnosed in
4974 // converted to a RecordType during instantiation. If the RecordType is
5172 // FIXME: Skip this if the parameters aren't instantiation-dependent.
5174 // Set up a template instantiation context.
5356 // instantiation.
5506 // Introduce an instantiation record that describes where we are using
5568 // re-instantiate constraints outside of normal instantiation.
6507 // expression is merely instantiation-dependent; is this enough?
7561 // is dependent, then we must wait until template instantiation time
7855 /// \param Loc the location of the explicit specialization or instantiation of
8213 // also do it during instantiation.
8331 // instantiation to take place, in every translation unit in which such a
8557 /// \brief Strips various properties off an implicit instantiation
8568 /// Compute the diagnostic location for an explicit instantiation
8581 "Explicit instantiation without point of instantiation?");
8608 // instantiation.
8627 "Explicit instantiation without point of instantiation?");
8633 // implicit instantiation to take place, in every translation unit in
8653 // This explicit instantiation declaration is redundant (that's okay).
8665 // For a given set of template parameters, if an explicit instantiation
8667 // specialization for that template, the explicit instantiation has no
8674 // If an entity is the subject of both an explicit instantiation
8675 // declaration and an explicit instantiation definition in the same
8701 // instantiation of a template appears after a declaration of
8703 // instantiation has no effect.
8716 // For a given set of template parameters, if an explicit instantiation
8718 // specialization for that template, the explicit instantiation has no
8733 // - an explicit instantiation definition shall appear at most once
8748 llvm_unreachable("Missing specialization/instantiation case?");
8971 // FIXME: Check if the prior specialization has a point of instantiation.
8990 // instantiation to take place, in every translation unit in which such a
9059 NamedDecl *Instantiation = nullptr;
9090 Instantiation ? getMoreConstrainedFunction(
9091 Method, cast<FunctionDecl>(Instantiation))
9100 Instantiation = Method;
9107 << Member << (InstantiatedFrom ? InstantiatedFrom : Instantiation);
9119 Instantiation = PrevVar;
9128 Instantiation = PrevRecord;
9137 Instantiation = PrevEnum;
9143 if (!Instantiation) {
9156 // Preserve instantiation information.
9160 cast<CXXMethodDecl>(Instantiation)->getTemplateSpecializationKind());
9164 cast<CXXRecordDecl>(Instantiation)->getTemplateSpecializationKind());
9176 Diag(Instantiation->getLocation(), diag::note_specialized_decl);
9184 // instantiation to take place, in every translation unit in which such a
9191 Instantiation,
9200 Instantiation, Member->getLocation(),
9204 // Note that this member specialization is an "instantiation of" the
9207 FunctionDecl *InstantiationFunction = cast<FunctionDecl>(Instantiation);
9264 NamedDecl *Instantiation = cast<NamedDecl>(Member->getCanonicalDecl());
9265 if (Instantiation == Member)
9268 if (auto *Function = dyn_cast<CXXMethodDecl>(Instantiation))
9270 else if (auto *Var = dyn_cast<VarDecl>(Instantiation))
9272 else if (auto *Record = dyn_cast<CXXRecordDecl>(Instantiation))
9274 else if (auto *Enum = dyn_cast<EnumDecl>(Instantiation))
9280 /// Check the scope of an explicit instantiation.
9296 // An explicit instantiation shall appear in an enclosing namespace of its
9297 // template. If the name declared in the explicit instantiation is an
9298 // unqualified name, the explicit instantiation shall appear in the
9334 /// Common checks for whether an explicit instantiation of \p D is valid.
9340 // An explicit instantiation declaration shall not name a specialization of
9349 // An explicit instantiation shall appear in an enclosing namespace of its
9363 // If the explicit instantiation is for a member function, a member class
9389 "delayed exports present at explicit instantiation");
9415 "Invalid enum tag in class template explicit instantiation!");
9440 // There are two forms of explicit instantiation: an explicit instantiation
9441 // definition and an explicit instantiation declaration. An explicit
9442 // instantiation declaration begins with the extern keyword. [...]
9449 // Check for dllexport class template instantiation declarations,
9467 // In MSVC mode, dllimported explicit instantiation definitions are treated as
9468 // instantiation declarations for most purposes.
9472 // Check for dllimport class template instantiation definitions.
9513 // Check for dllexport class template instantiation definitions in MinGW
9514 // mode, if a previous declaration of the instantiation was seen.
9538 // Even though HasNoEffect == true means that this explicit instantiation
9569 // propagated to the new node prior to instantiation.
9596 // Add the explicit instantiation into its lexical context. However,
9611 // shall be in scope at the point of the explicit instantiation of
9615 // instantiation.
9641 // An explicit instantiation definition can add a dll attribute to a
9642 // template with a previous instantiation declaration. MinGW doesn't
9658 // An explicit instantiation definition can add a dll attribute to a
9659 // template with a previous implicit instantiation. MinGW doesn't allow
9664 // dllimport explicit instantiation definition for the same template
9671 "Def and Specialization should match for implicit instantiation");
9675 // In MinGW mode, export the template instantiation if the declaration
9712 assert(!IsDependent && "explicit instantiation of dependent name not yet handled");
9733 // If the explicit instantiation is for a class or member class, the
9743 // There are two forms of explicit instantiation: an explicit instantiation
9744 // definition and an explicit instantiation declaration. An explicit
9745 // instantiation declaration begins with the extern keyword. [...]
9776 // at the point of an explicit instantiation of the member class.
9839 // instantiation (14.7.2) directive.
9854 // [...] An explicit instantiation of a function template shall not use the
9874 << /*explicit instantiation*/ 0;
9879 // There are two forms of explicit instantiation: an explicit instantiation
9880 // definition and an explicit instantiation declaration. An explicit
9881 // instantiation declaration begins with the extern keyword. [...]
9940 // If the explicit instantiation is for a variable, the unqualified-id
9961 // instantiation. This should probably only happen during error
9973 // If the explicit instantiation is for a member function, a member class
10119 // In an explicit instantiation an exception-specification may be specified,
10121 // If an exception-specification is specified in an explicit instantiation
10175 // attribute. Ignore the explicit instantiation declaration in this case.
10187 // In MSVC mode, dllimported explicit instantiation definitions are treated as
10188 // instantiation declarations.
10204 // If the explicit instantiation is for a member function, a member class
10478 // If the nested-name-specifier refers to the current instantiation,
10548 // Okay, it's a member of an unknown instantiation.
10852 /// instantiation to take place, in every translation unit in which such a
10859 /// specialization as the result of an implicit or explicit instantiation
10922 // 3) The declaration is an instantiation of a template, and that template
10925 // We don't need to go any deeper than that, as the instantiation of the
10927 // instantiation, and thus should be checked elsewhere.