diff options
Diffstat (limited to 'include/clang/Parse/Parser.h')
| -rw-r--r-- | include/clang/Parse/Parser.h | 53 | 
1 files changed, 34 insertions, 19 deletions
| diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h index f12bec6929e1..caba77b74c67 100644 --- a/include/clang/Parse/Parser.h +++ b/include/clang/Parse/Parser.h @@ -235,7 +235,7 @@ class Parser : public CodeCompletionHandler {  public:    Parser(Preprocessor &PP, Sema &Actions, bool SkipFunctionBodies); -  ~Parser(); +  ~Parser() override;    const LangOptions &getLangOpts() const { return PP.getLangOpts(); }    const TargetInfo &getTargetInfo() const { return PP.getTargetInfo(); } @@ -245,8 +245,8 @@ public:    const Token &getCurToken() const { return Tok; }    Scope *getCurScope() const { return Actions.getCurScope(); } -  void incrementMSLocalManglingNumber() const { -    return Actions.incrementMSLocalManglingNumber(); +  void incrementMSManglingNumber() const { +    return Actions.incrementMSManglingNumber();    }    Decl  *getObjCDeclContext() const { return Actions.getObjCDeclContext(); } @@ -745,8 +745,8 @@ public:    /// the parser will exit the scope.    class ParseScope {      Parser *Self; -    ParseScope(const ParseScope &) LLVM_DELETED_FUNCTION; -    void operator=(const ParseScope &) LLVM_DELETED_FUNCTION; +    ParseScope(const ParseScope &) = delete; +    void operator=(const ParseScope &) = delete;    public:      // ParseScope - Construct a new object to manage a scope in the @@ -759,7 +759,7 @@ public:          Self->EnterScope(ScopeFlags);        else {          if (BeforeCompoundStmt) -          Self->incrementMSLocalManglingNumber(); +          Self->incrementMSManglingNumber();          this->Self = nullptr;        } @@ -790,8 +790,8 @@ private:    class ParseScopeFlags {      Scope *CurScope;      unsigned OldFlags; -    ParseScopeFlags(const ParseScopeFlags &) LLVM_DELETED_FUNCTION; -    void operator=(const ParseScopeFlags &) LLVM_DELETED_FUNCTION; +    ParseScopeFlags(const ParseScopeFlags &) = delete; +    void operator=(const ParseScopeFlags &) = delete;    public:      ParseScopeFlags(Parser *Self, unsigned ScopeFlags, bool ManageFlags = true); @@ -887,7 +887,7 @@ private:    class LateParsedClass : public LateParsedDeclaration {    public:      LateParsedClass(Parser *P, ParsingClass *C); -    virtual ~LateParsedClass(); +    ~LateParsedClass() override;      void ParseLexedMethodDeclarations() override;      void ParseLexedMemberInitializers() override; @@ -1166,7 +1166,6 @@ private:                                  ParsingDeclarator &D,                                  const ParsedTemplateInfo &TemplateInfo,                                  const VirtSpecifiers& VS, -                                FunctionDefinitionKind DefinitionKind,                                  ExprResult& Init);    void ParseCXXNonStaticMemberInitializer(Decl *VarD);    void ParseLexedAttributes(ParsingClass &Class); @@ -1241,6 +1240,7 @@ private:    bool ParseObjCProtocolReferences(SmallVectorImpl<Decl *> &P,                                     SmallVectorImpl<SourceLocation> &PLocs,                                     bool WarnOnDeclarations, +                                   bool ForObjCContainer,                                     SourceLocation &LAngleLoc,                                     SourceLocation &EndProtoLoc);    bool ParseObjCProtocolQualifiers(DeclSpec &DS); @@ -1362,12 +1362,9 @@ private:    typedef SmallVector<SourceLocation, 20> CommaLocsTy;    /// ParseExpressionList - Used for C/C++ (argument-)expression-list. -  bool -  ParseExpressionList(SmallVectorImpl<Expr *> &Exprs, -                      SmallVectorImpl<SourceLocation> &CommaLocs, -                      void (Sema::*Completer)(Scope *S, Expr *Data, -                                              ArrayRef<Expr *> Args) = nullptr, -                      Expr *Data = nullptr); +  bool ParseExpressionList(SmallVectorImpl<Expr *> &Exprs, +                           SmallVectorImpl<SourceLocation> &CommaLocs, +                           std::function<void()> Completer = nullptr);    /// ParseSimpleExpressionList - A simple comma-separated list of expressions,    /// used for misc language extensions. @@ -1661,7 +1658,6 @@ private:    // MS: SEH Statements and Blocks    StmtResult ParseSEHTryBlock(); -  StmtResult ParseSEHTryBlockCommon(SourceLocation Loc);    StmtResult ParseSEHExceptBlock(SourceLocation Loc);    StmtResult ParseSEHFinallyBlock(SourceLocation Loc);    StmtResult ParseSEHLeaveStatement(); @@ -1984,6 +1980,9 @@ private:    void DiagnoseMisplacedCXX11Attribute(ParsedAttributesWithRange &Attrs,                                         SourceLocation CorrectLocation); +  void handleDeclspecAlignBeforeClassKey(ParsedAttributesWithRange &Attrs, +                                         DeclSpec &DS, Sema::TagUseKind TUK); +    void ProhibitAttributes(ParsedAttributesWithRange &attrs) {      if (!attrs.Range.isValid()) return;      DiagnoseProhibitedAttributes(attrs); @@ -2088,7 +2087,15 @@ private:    }    void ParseMicrosoftAttributes(ParsedAttributes &attrs,                                  SourceLocation *endLoc = nullptr); -  void ParseMicrosoftDeclSpec(ParsedAttributes &Attrs); +  void MaybeParseMicrosoftDeclSpecs(ParsedAttributes &Attrs, +                                    SourceLocation *End = nullptr) { +    const auto &LO = getLangOpts(); +    if ((LO.MicrosoftExt || LO.Borland || LO.CUDA) && +        Tok.is(tok::kw___declspec)) +      ParseMicrosoftDeclSpecs(Attrs, End); +  } +  void ParseMicrosoftDeclSpecs(ParsedAttributes &Attrs, +                               SourceLocation *End = nullptr);    bool ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName,                                    SourceLocation AttrNameLoc,                                    ParsedAttributes &Attrs); @@ -2219,6 +2226,8 @@ private:                                 BalancedDelimiterTracker &Tracker,                                 bool IsAmbiguous,                                 bool RequiresArg = false); +  bool ParseRefQualifier(bool &RefQualifierIsLValueRef, +                         SourceLocation &RefQualifierLoc);    bool isFunctionDeclaratorIdentifierList();    void ParseFunctionDeclaratorIdentifierList(           Declarator &D, @@ -2287,6 +2296,10 @@ private:                             AccessSpecifier AS, bool EnteringContext,                             DeclSpecContext DSC,                              ParsedAttributesWithRange &Attributes); +  void SkipCXXMemberSpecification(SourceLocation StartLoc, +                                  SourceLocation AttrFixitLoc, +                                  unsigned TagType, +                                  Decl *TagDecl);    void ParseCXXMemberSpecification(SourceLocation StartLoc,                                     SourceLocation AttrFixitLoc,                                     ParsedAttributesWithRange &Attrs, @@ -2294,10 +2307,12 @@ private:                                     Decl *TagDecl);    ExprResult ParseCXXMemberInitializer(Decl *D, bool IsFunction,                                         SourceLocation &EqualLoc); -  void ParseCXXMemberDeclaratorBeforeInitializer(Declarator &DeclaratorInfo, +  bool ParseCXXMemberDeclaratorBeforeInitializer(Declarator &DeclaratorInfo,                                                   VirtSpecifiers &VS,                                                   ExprResult &BitfieldSize,                                                   LateParsedAttrList &LateAttrs); +  void MaybeParseAndDiagnoseDeclSpecAfterCXX11VirtSpecifierSeq(Declarator &D, +                                                               VirtSpecifiers &VS);    void ParseCXXClassMemberDeclaration(AccessSpecifier AS, AttributeList *Attr,                    const ParsedTemplateInfo &TemplateInfo = ParsedTemplateInfo(),                    ParsingDeclRAIIObject *DiagsFromTParams = nullptr); | 
