Lines Matching defs:Specifier
56 /// 'namespace' identifier '=' qualified-namespace-specifier ';'
269 // Parse (optional) nested-name-specifier.
422 /// 'using' 'namespace' ::[opt] nested-name-specifier[opt]
425 /// 'using' 'namespace' ::[opt] nested-name-specifier[opt]
444 // Parse (optional) nested-name-specifier.
485 /// 'using' 'typename'[opt] ::[opt] nested-name-specifier
490 /// 'using' identifier attribute-specifier-seq[opt] = type-id ;
508 // FIXME: This is wrong; we should parse this as a typename-specifier.
518 // Parse nested-name-specifier.
525 // Check nested-name specifier.
540 // specified after the nested-name-specifier is the same as the identifier
542 // nested-name-specifier, the name is [...] considered to name the
657 // ignoring the parameters, just in case the nested name specifier
758 /// ParseDecltypeSpecifier - Parse a C++11 decltype specifier.
765 && "Not a decltype specifier");
796 // because the typename-specifier in a function-style cast operation can't
807 // The operand of the decltype specifier is an unevaluated operand.
889 "Not an underlying type specifier");
918 /// ParseBaseTypeSpecifier - Parse a C++ base-type-specifier which is either a
919 /// class name or decltype-specifier. Note that we only check that the result
924 /// base-type-specifier: [C++11 class.derived]
927 /// nested-name-specifier[opt] class-name
928 /// decltype-specifier
933 /// In C++98, instead of base-type-specifier, we have:
935 /// ::[opt] nested-name-specifier[opt] class-name
945 // Parse optional nested-name-specifier
951 // Parse decltype-specifier
1079 /// Determine whether the following tokens are valid after a type-specifier
1132 // type/storage class specifier we're seeing is part of the *next*
1141 // token to see if it's a type specifier. If so, we know the code is
1158 /// ParseClassSpecifier - Parse a C++ class-specifier [C++ class] or
1159 /// elaborated-type-specifier [C++ dcl.type.elab]; we can't tell which
1163 /// class-specifier: [C++ class]
1168 /// class-key nested-name-specifier identifier base-clause[opt]
1169 /// class-key nested-name-specifier[opt] simple-template-id
1172 /// [GNU] class-key attributes[opt] nested-name-specifier
1174 /// [GNU] class-key attributes[opt] nested-name-specifier[opt]
1181 /// elaborated-type-specifier: [C++ dcl.type.elab]
1182 /// class-key ::[opt] nested-name-specifier[opt] identifier
1183 /// class-key ::[opt] nested-name-specifier[opt] 'template'[opt]
1186 /// Note that the C++ class-specifier and elaborated-type-specifier,
1187 /// together, subsume the C99 struct-or-union-specifier:
1189 /// struct-or-union-specifier: [C99 6.7.2.1]
1212 assert(TagTokKind == tok::kw_union && "Not a class specifier");
1231 // type specifier.
1346 // Parse the (optional) nested-name-specifier.
1350 // is a base-specifier-list.
1459 // However, in type-specifier-seq's, things look like declarations but are
1559 // If this is an elaborated type specifier, and we delayed
1786 // At this point, we've successfully parsed a class-specifier in 'definition'
1796 // After a type-specifier, we don't expect a semicolon. This only happens in
1817 /// ':' base-specifier-list
1818 /// base-specifier-list:
1819 /// base-specifier '...'[opt]
1820 /// base-specifier-list ',' base-specifier '...'[opt]
1829 // Parse a base-specifier.
1832 // Skip the rest of this base specifier, up until the comma or
1850 /// ParseBaseSpecifier - Parse a C++ base-specifier. A base-specifier is
1851 /// one entry in the base class list of a class specifier, for example:
1855 /// base-specifier: [C++ class.derived]
1856 /// attribute-specifier-seq[opt] base-type-specifier
1857 /// attribute-specifier-seq[opt] 'virtual' access-specifier[opt]
1858 /// base-type-specifier
1859 /// attribute-specifier-seq[opt] access-specifier 'virtual'[opt]
1860 /// base-type-specifier
1874 // Parse an (optional) access specifier.
1882 // access specifier.
1901 // parsing the class-name for a base specifier.
1913 // actually part of the base-specifier-list grammar productions, but we
1918 // Find the complete source range for the base-specifier.
1922 // base-specifier.
1929 /// a C++ access-specifier.
1931 /// access-specifier: [C++ class.derived]
1988 /// virt-specifier.
1990 /// virt-specifier:
1993 VirtSpecifiers::Specifier Parser::isCXX11VirtSpecifier(const Token &Tok) const {
2019 /// ParseOptionalCXX11VirtSpecifierSeq - Parse a virt-specifier-seq.
2021 /// virt-specifier-seq:
2022 /// virt-specifier
2023 /// virt-specifier-seq virt-specifier
2028 VirtSpecifiers::Specifier Specifier = isCXX11VirtSpecifier();
2029 if (Specifier == VirtSpecifiers::VS_None)
2034 << VirtSpecifiers::getSpecifierName(Specifier)
2042 // A virt-specifier-seq shall contain at most one of each virt-specifier.
2044 if (VS.SetSpecifier(Specifier, Tok.getLocation(), PrevSpec))
2049 if (IsInterface && (Specifier == VirtSpecifiers::VS_Final ||
2050 Specifier == VirtSpecifiers::VS_Sealed)) {
2052 << VirtSpecifiers::getSpecifierName(Specifier);
2053 } else if (Specifier == VirtSpecifiers::VS_Sealed) {
2060 << VirtSpecifiers::getSpecifierName(Specifier);
2069 VirtSpecifiers::Specifier Specifier = isCXX11VirtSpecifier();
2070 return Specifier == VirtSpecifiers::VS_Final ||
2071 Specifier == VirtSpecifiers::VS_Sealed;
2075 /// brace-or-equal-initializer or pure-specifier.
2080 // declarator pure-specifier[opt]
2117 // virt-specifier *after* the GNU attributes.
2124 // virt-specifier, issue a GCC-compat warning.
2146 /// virt-specifier-seq and diagnose them.
2210 /// decl-specifier-seq[opt] member-declarator-list[opt] ';'
2212 /// ::[opt] nested-name-specifier template[opt] unqualified-id ';'[TODO]
2223 /// declarator virt-specifier-seq[opt] pure-specifier[opt]
2228 /// virt-specifier-seq:
2229 /// virt-specifier
2230 /// virt-specifier-seq virt-specifier
2232 /// virt-specifier:
2237 /// pure-specifier:
2283 // Collect the scope specifier token we annotated earlier.
2346 // Optional C++11 attribute-specifier
2349 // before they are taken over by declaration specifier.
2375 // decl-specifier-seq:
2454 // MSVC permits pure specifier on inline functions defined at class scope.
2480 // C++11 [dcl.attr.grammar] p4: If an attribute-specifier-seq appertains
2484 // Diagnose attributes that appear before decl specifier:
2543 // It's a pure-specifier.
2565 // C++11 [dcl.attr.grammar] p4: If an attribute-specifier-seq appertains
2711 /// This does not check for a pure-specifier; that's handled elsewhere.
2875 // Current token is a C++ access specifier.
2920 /// access-specifier ':' member-specification[opt]
2976 VirtSpecifiers::Specifier Specifier = isCXX11VirtSpecifier(Tok);
2977 assert((Specifier == VirtSpecifiers::VS_Final ||
2978 Specifier == VirtSpecifiers::VS_Sealed) &&
2981 Specifier == VirtSpecifiers::VS_Sealed;
2985 << VirtSpecifiers::getSpecifierName(Specifier);
2986 else if (Specifier == VirtSpecifiers::VS_Final)
2990 << VirtSpecifiers::getSpecifierName(Specifier);
2991 else if (Specifier == VirtSpecifiers::VS_Sealed)
3233 /// '::'[opt] nested-name-specifier[opt] class-name
3236 // parse '::'[opt] nested-name-specifier[opt]
3704 /// ParseCXX11AttributeSpecifier - Parse a C++11 attribute-specifier.
3706 /// [C++11] attribute-specifier:
3708 /// alignment-specifier
3804 /// ParseCXX11Attributes - Parse a C++11 attribute-specifier-seq.
3806 /// attribute-specifier-seq:
3807 /// attribute-specifier-seq[opt] attribute-specifier
3848 assert(Tok.is(tok::kw_alignas) && "not an attribute specifier");
3925 // Current token is a C++ access specifier.