| // Copyright 2015 the V8 project 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 V8_EXPRESSION_TYPE_COLLECTOR_H_ |
| #define V8_EXPRESSION_TYPE_COLLECTOR_H_ |
| |
| #include "src/ast/ast-expression-visitor.h" |
| |
| namespace v8 { |
| namespace internal { |
| |
| class AstTypeBounds; |
| |
| // A Visitor over an AST that collects a human readable string summarizing |
| // structure and types. Used for testing of the typing information attached |
| // to the expression nodes of an AST. |
| |
| struct ExpressionTypeEntry { |
| int depth; |
| const char* kind; |
| const AstRawString* name; |
| Bounds bounds; |
| }; |
| |
| class ExpressionTypeCollector : public AstExpressionVisitor { |
| public: |
| ExpressionTypeCollector(Isolate* isolate, FunctionLiteral* root, |
| const AstTypeBounds* bounds, |
| ZoneVector<ExpressionTypeEntry>* dst); |
| void Run(); |
| |
| protected: |
| void VisitExpression(Expression* expression); |
| |
| private: |
| const AstTypeBounds* bounds_; |
| ZoneVector<ExpressionTypeEntry>* result_; |
| }; |
| } // namespace internal |
| } // namespace v8 |
| |
| #endif // V8_EXPRESSION_TYPE_COLLECTOR_H_ |