| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef TOOLS_BLINK_GC_PLUGIN_CHECK_DISPATCH_VISITOR_H_ | 
 | #define TOOLS_BLINK_GC_PLUGIN_CHECK_DISPATCH_VISITOR_H_ | 
 |  | 
 | #include "clang/AST/RecursiveASTVisitor.h" | 
 |  | 
 | class RecordInfo; | 
 |  | 
 | // This visitor checks that a method contains within its body, a call to a | 
 | // method on the provided receiver class. This is used to check manual | 
 | // dispatching for trace and finalize methods. | 
 | class CheckDispatchVisitor | 
 |     : public clang::RecursiveASTVisitor<CheckDispatchVisitor> { | 
 |  public: | 
 |   explicit CheckDispatchVisitor(RecordInfo* receiver); | 
 |  | 
 |   bool dispatched_to_receiver(); | 
 |  | 
 |   bool VisitMemberExpr(clang::MemberExpr* member); | 
 |   bool VisitUnresolvedMemberExpr(clang::UnresolvedMemberExpr* member); | 
 |  | 
 |  private: | 
 |   RecordInfo* receiver_; | 
 |   bool dispatched_to_receiver_; | 
 | }; | 
 |  | 
 | #endif  // TOOLS_BLINK_GC_PLUGIN_CHECK_DISPATCH_VISITOR_H_ |