X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/c5587ed74e6cf565bf30da661579e80d78f96e80..36d11fcb440ba86ddb2c1016a781cc1b9ea620e0:/Parser.hpp diff --git a/Parser.hpp b/Parser.hpp index 63270a1..01a510f 100644 --- a/Parser.hpp +++ b/Parser.hpp @@ -1,5 +1,5 @@ /* Cycript - Optimizing JavaScript Compiler/Runtime - * Copyright (C) 2009-2014 Jay Freeman (saurik) + * Copyright (C) 2009-2015 Jay Freeman (saurik) */ /* GNU Affero General Public License, Version 3 {{{ */ @@ -33,6 +33,7 @@ #include #include "List.hpp" +#include "Location.hpp" #include "Pooling.hpp" #include "Options.hpp" @@ -1689,6 +1690,8 @@ struct CYTypeShort : virtual void Output(CYOutput &out) const; }; +struct CYTypeFunctionWith; + struct CYTypeModifier : CYNext { @@ -1704,6 +1707,8 @@ struct CYTypeModifier : virtual void Output(CYOutput &out, CYIdentifier *identifier) const = 0; void Output(CYOutput &out, int precedence, CYIdentifier *identifier) const; + + virtual CYTypeFunctionWith *Function() { return NULL; } }; struct CYTypeArrayOf : @@ -1769,11 +1774,13 @@ struct CYTypedIdentifier : CYNext, CYThing { + CYLocation location_; CYIdentifier *identifier_; CYTypeSpecifier *specifier_; CYTypeModifier *modifier_; - CYTypedIdentifier(CYIdentifier *identifier = NULL) : + CYTypedIdentifier(const CYLocation &location, CYIdentifier *identifier = NULL) : + location_(location), identifier_(identifier), specifier_(NULL), modifier_(NULL) @@ -1794,6 +1801,8 @@ struct CYTypedIdentifier : virtual CYExpression *Replace(CYContext &context); virtual void Output(CYOutput &out) const; + + CYTypeFunctionWith *Function(); }; struct CYEncodedType : @@ -1943,6 +1952,8 @@ struct CYTypeFunctionWith : virtual CYExpression *Replace_(CYContext &context, CYExpression *type); virtual void Output(CYOutput &out, CYIdentifier *identifier) const; + + virtual CYTypeFunctionWith *Function() { return this; } }; namespace cy {