@@ -27,16 +27,13 @@ class Declarable {
2727 public:
2828 virtual ~Declarable () = default ;
2929 enum Kind {
30- kVariable ,
31- kParameter ,
3230 kMacro ,
3331 kMacroList ,
3432 kBuiltin ,
3533 kRuntimeFunction ,
3634 kGeneric ,
3735 kGenericList ,
3836 kTypeAlias ,
39- kLabel ,
4037 kExternConstant ,
4138 kModuleConstant
4239 };
@@ -46,17 +43,11 @@ class Declarable {
4643 bool IsRuntimeFunction () const { return kind () == kRuntimeFunction ; }
4744 bool IsGeneric () const { return kind () == kGeneric ; }
4845 bool IsTypeAlias () const { return kind () == kTypeAlias ; }
49- bool IsParameter () const { return kind () == kParameter ; }
50- bool IsLabel () const { return kind () == kLabel ; }
51- bool IsVariable () const { return kind () == kVariable ; }
5246 bool IsMacroList () const { return kind () == kMacroList ; }
5347 bool IsGenericList () const { return kind () == kGenericList ; }
5448 bool IsExternConstant () const { return kind () == kExternConstant ; }
5549 bool IsModuleConstant () const { return kind () == kModuleConstant ; }
56- bool IsValue () const {
57- return IsVariable () || IsExternConstant () || IsParameter () ||
58- IsModuleConstant ();
59- }
50+ bool IsValue () const { return IsExternConstant () || IsModuleConstant (); }
6051 virtual const char * type_name () const { return " <<unknown>>" ; }
6152
6253 protected:
@@ -110,22 +101,6 @@ class Value : public Declarable {
110101 base::Optional<VisitResult> value_;
111102};
112103
113- class Parameter : public Value {
114- public:
115- DECLARE_DECLARABLE_BOILERPLATE (Parameter, parameter);
116-
117- const std::string& external_name () const { return external_name_; }
118-
119- private:
120- friend class Declarations ;
121- Parameter (const std::string& name, std::string external_name,
122- const Type* type)
123- : Value(Declarable::kParameter , type, name),
124- external_name_ (external_name) {}
125-
126- std::string external_name_;
127- };
128-
129104class ModuleConstant : public Value {
130105 public:
131106 DECLARE_DECLARABLE_BOILERPLATE (ModuleConstant, constant);
@@ -141,75 +116,6 @@ class ModuleConstant : public Value {
141116 std::string constant_name_;
142117};
143118
144- class Variable : public Value {
145- public:
146- DECLARE_DECLARABLE_BOILERPLATE (Variable, variable);
147- bool IsConst () const override { return const_; }
148- void Define () {
149- if (defined_ && IsConst ()) {
150- ReportError (" Cannot re-define a const-bound variable." );
151- }
152- defined_ = true ;
153- }
154- bool IsDefined () const { return defined_; }
155-
156- private:
157- friend class Declarations ;
158- Variable (std::string name, const Type* type, bool is_const)
159- : Value(Declarable::kVariable , type, name),
160- defined_ (false ),
161- const_(is_const) {
162- DCHECK_IMPLIES (type->IsConstexpr (), IsConst ());
163- }
164-
165- std::string value_;
166- bool defined_;
167- bool const_;
168- };
169-
170- class Label : public Declarable {
171- public:
172- void AddVariable (Variable* var) { parameters_.push_back (var); }
173- Block* block () const { return *block_; }
174- void set_block (Block* block) {
175- DCHECK (!block_);
176- block_ = block;
177- }
178- const std::string& external_label_name () const {
179- return *external_label_name_;
180- }
181- const std::string& name () const { return name_; }
182- void set_external_label_name (std::string external_label_name) {
183- DCHECK (!block_);
184- DCHECK (!external_label_name_);
185- external_label_name_ = std::move (external_label_name);
186- }
187- Variable* GetParameter (size_t i) const { return parameters_[i]; }
188- size_t GetParameterCount () const { return parameters_.size (); }
189- const std::vector<Variable*>& GetParameters () const { return parameters_; }
190-
191- DECLARE_DECLARABLE_BOILERPLATE (Label, label);
192- void MarkUsed () { used_ = true ; }
193- bool IsUsed () const { return used_; }
194- bool IsDeferred () const { return deferred_; }
195-
196- private:
197- friend class Declarations ;
198- explicit Label (std::string name, bool deferred = false )
199- : Declarable(Declarable::kLabel ),
200- name_(std::move(name)),
201- used_(false ),
202- deferred_(deferred) {}
203-
204- std::string name_;
205- base::Optional<Block*> block_;
206- base::Optional<std::string> external_label_name_;
207- std::vector<Variable*> parameters_;
208- static size_t next_id_;
209- bool used_;
210- bool deferred_;
211- };
212-
213119class ExternConstant : public Value {
214120 public:
215121 DECLARE_DECLARABLE_BOILERPLATE (ExternConstant, constant);
@@ -380,12 +286,8 @@ class TypeAlias : public Declarable {
380286 const Type* type_;
381287};
382288
383- void PrintLabel (std::ostream& os, const Label& l, bool with_names);
384-
385289std::ostream& operator <<(std::ostream& os, const Callable& m);
386- std::ostream& operator <<(std::ostream& os, const Variable& v);
387290std::ostream& operator <<(std::ostream& os, const Builtin& b);
388- std::ostream& operator <<(std::ostream& os, const Label& l);
389291std::ostream& operator <<(std::ostream& os, const RuntimeFunction& b);
390292std::ostream& operator <<(std::ostream& os, const Generic& g);
391293
0 commit comments