Arquivos
hhvm/hphp/compiler/statement/function_statement.h
T
drussi bf740ca345 expose return type constraint (aka hint) from the AST to the runtime and reflection
This is the first part of the work to expose type constraint and generic all the way to reflection. This first DIFF exposes the return type with generic types coming next.
2013-04-09 15:31:40 -07:00

62 linhas
2.4 KiB
C++

/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#ifndef __FUNCTION_STATEMENT_H__
#define __FUNCTION_STATEMENT_H__
#include <compiler/statement/method_statement.h>
#include <compiler/expression/unary_op_expression.h>
namespace HPHP {
///////////////////////////////////////////////////////////////////////////////
DECLARE_BOOST_TYPES(ExpressionList);
DECLARE_BOOST_TYPES(StatementList);
DECLARE_BOOST_TYPES(FunctionScope);
DECLARE_BOOST_TYPES(FunctionStatement);
class FunctionStatement : public MethodStatement {
public:
FunctionStatement(STATEMENT_CONSTRUCTOR_PARAMETERS,
ModifierExpressionPtr modifiers, bool ref,
const std::string &name, ExpressionListPtr params,
const std::string &retTypeConstraint,
StatementListPtr stmt, int attr,
const std::string &docComment,
ExpressionListPtr attrList);
DECLARE_BASE_STATEMENT_VIRTUAL_FUNCTIONS;
virtual bool hasDecl() const { return true; }
virtual bool hasImpl() const;
virtual std::string getName() const;
// implementing IParseHandler
virtual void onParse(AnalysisResultConstPtr ar, FileScopePtr scope);
bool ignored() const { return m_ignored;}
void outputPHPHeader(CodeGenerator &cg, AnalysisResultPtr ar);
void outputPHPBody(CodeGenerator &cg, AnalysisResultPtr ar);
private:
bool m_ignored;
};
///////////////////////////////////////////////////////////////////////////////
}
#endif // __FUNCTION_STATEMENT_H__