// Copyright 2006-2009 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_PARSING_FUNC_NAME_INFERRER_H_ #define V8_PARSING_FUNC_NAME_INFERRER_H_ #include <vector> #include "src/base/macros.h" #include "src/base/pointer-with-payload.h" #include "src/base/small-vector.h" namespace v8 { namespace internal { class AstRawString; } namespace base { template <> struct PointerWithPayloadTraits<v8::internal::AstRawString> { … }; } // namespace base namespace internal { class AstConsString; class AstValueFactory; class FunctionLiteral; enum class InferName { … }; // FuncNameInferrer is a stateful class that is used to perform name // inference for anonymous functions during static analysis of source code. // Inference is performed in cases when an anonymous function is assigned // to a variable or a property (see test-func-name-inference.cc for examples.) // // The basic idea is that during parsing of LHSs of certain expressions // (assignments, declarations, object literals) we collect name strings, // and during parsing of the RHS, a function literal can be collected. After // parsing the RHS we can infer a name for function literals that do not have // a name. class FuncNameInferrer { … }; } // namespace internal } // namespace v8 #endif // V8_PARSING_FUNC_NAME_INFERRER_H_