This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gcjx] Expand visitor interface


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ranjit Mathew wrote:
>>
>>Ranjit> Now if only I can come up with a simple way of tackling
>>Ranjit> model_generic_invocation instances...
>>
>>You could have specializations of
>>model_generic_invocation<T>::visit(visitor*) ..?
> 
> 
> I'm not completely sure what you mean here.

...because I'm thick-headed. :-/

I now see what you mean. I have checked in the attached
patches to implement this suggestion as well as make
the erstwhile aborting host classes for the visitor not
abort any more (but shifting these abort()s to the
visitor).

Thanks,
Ranjit.

- --
Ranjit Mathew       Email: rmathew AT gmail DOT com

Bangalore, INDIA.     Web: http://ranjitmathew.hostingzero.com/




-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDTgEgYb1hx2wRS48RAlHLAJ0ZBqiPfSUfRIxi9+PjFTAzInFs9gCglIhU
8AK+KRaiThlYEZTXkXyZcgs=
=Cqe+
-----END PGP SIGNATURE-----
Index: ChangeLog
from  Ranjit Mathew  <rmathew@gcc.gnu.org>

	* model/invoke.hh (model_type_qualified_invocation::klass): Make
	protected instead of private.
	(model_type_qualified_invocation::super): Likewise.
	(model_super_invocation::finit): Likewise.
	(model_super_invocation::synthetic): Likewise.
	(model_generic_invocation::visit): Declare.
	* model/invoke.cc (model_generic_invocation::visit): Implement
	for all the default instantiations.
	* model/annotation.cc (model_annotation::visit): Do not abort.
	* model/memberref.cc (model_memberref_enum::visit): Likewise.
	* model/arrayinit.cc (model_annotation_initializer::visit): Likewise.
	* model/new.hh (model_new_primary::simple_name): Make protected
	instead of private.
	(model_new_primary::type_params): Likewise.
	* visitor.hh (visitor::visit_generic_invocation): New method.
	(visitor::visit_annotation): Likewise.
	(visitor::visit_annotation_initializer): Likewise.
	(visitor::visit_memberref_enum): Likewise.
	* fold.cc (fold_visitor): Implement new visitor methods.
	* defassign.cc (definite_assignment_visitor): Likewise.
	* dump.cc (dumper, pretty_printer): Likewise.
	* bytecode/generate.hh (bytecode_generator): Likewise.

Index: model/invoke.hh
===================================================================
--- model/invoke.hh	2005-10-13 09:57:17.000000000 +0530
+++ model/invoke.hh	2005-10-13 10:52:32.000000000 +0530
@@ -145,17 +145,17 @@ public:
 
 class model_type_qualified_invocation : public model_invocation_base
 {
+  void determine_search_class (resolution_scope *, model_class **,
+			       model_class **);
+
+protected:
+
   // The class to search.
   ref_forwarding_type klass;
 
   // If true, this is a 'super' call.
   bool super;
 
-  void determine_search_class (resolution_scope *, model_class **,
-			       model_class **);
-
-protected:
-
   bool super_call_p () const
   {
     return super;
@@ -190,9 +190,14 @@ public:
 /// reuse the method lookup code.
 class model_super_invocation : public model_invocation_base
 {
+  void determine_search_class (resolution_scope *, model_class **,
+			       model_class **);
+
   // If not NULL, the lexically enclosing class.
   model_class *enclosing;
 
+protected:
+
   // Any constructor with a 'super' call must initialize the local
   // fields after the superclass is initialized.  It is simplest for
   // us to have this call be considered as part of the 'super' call.
@@ -203,9 +208,6 @@ class model_super_invocation : public mo
   // the source code.
   bool synthetic;
 
-  void determine_search_class (resolution_scope *, model_class **,
-			       model_class **);
-
 public:
 
   model_super_invocation (const location &w)
@@ -276,6 +278,8 @@ public:
 
   model_generic_invocation (const location &,
 			    const std::list<ref_forwarding_type> &);
+
+  void visit (visitor *);
 };
 
 /// These classes are used to represent explicitly-parameterized
Index: model/invoke.cc
===================================================================
--- model/invoke.cc	2005-10-13 09:57:29.000000000 +0530
+++ model/invoke.cc	2005-10-13 10:50:17.000000000 +0530
@@ -624,3 +624,37 @@ template class model_generic_invocation<
 template class model_generic_invocation<model_this_invocation>;
 template class model_generic_invocation<model_new>;
 template class model_generic_invocation<model_new_primary>;
+
+void
+model_generic_invocation<model_type_qualified_invocation>::visit (visitor *v)
+{
+  v->visit_generic_invocation (this, method, arguments, super,
+                               actual_type_params);
+}
+
+void
+model_generic_invocation<model_super_invocation>::visit (visitor *v)
+{
+  v->visit_generic_invocation (this, method, arguments, finit,
+                               actual_type_params);
+}
+
+void
+model_generic_invocation<model_this_invocation>::visit (visitor *v)
+{
+  v->visit_generic_invocation (this, method, arguments, actual_type_params);
+}
+
+void
+model_generic_invocation<model_new>::visit (visitor *v)
+{
+  v->visit_generic_invocation (this, method, klass, arguments,
+                               actual_type_params);
+}
+
+void
+model_generic_invocation<model_new_primary>::visit (visitor *v)
+{
+  v->visit_generic_invocation (this, method, klass, arguments, simple_name,
+                               type_params, actual_type_params);
+}
Index: model/annotation.cc
===================================================================
--- model/annotation.cc	2005-10-13 10:17:14.000000000 +0530
+++ model/annotation.cc	2005-10-13 10:20:14.000000000 +0530
@@ -48,10 +48,9 @@ model_annotation::resolve (resolution_sc
 }
 
 void
-model_annotation::visit (visitor *)
+model_annotation::visit (visitor *v)
 {
-  // FIXME
-  abort ();
+  v->visit_annotation (this, name, args);
 }
 
 model_annotation_value *
Index: model/memberref.cc
===================================================================
--- model/memberref.cc	2005-10-13 10:18:25.000000000 +0530
+++ model/memberref.cc	2005-10-13 10:19:59.000000000 +0530
@@ -77,8 +77,7 @@ model_memberref_enum::resolve (resolutio
 }
 
 void
-model_memberref_enum::visit (visitor *)
+model_memberref_enum::visit (visitor *v)
 {
-  // Not needed.
-  abort ();
+  v->visit_memberref_enum (this, base_type, field_name);
 }
Index: model/arrayinit.cc
===================================================================
--- model/arrayinit.cc	2005-10-13 10:20:29.000000000 +0530
+++ model/arrayinit.cc	2005-10-13 10:22:04.000000000 +0530
@@ -72,10 +72,9 @@ model_annotation_initializer::resolve (r
 }
 
 void
-model_annotation_initializer::visit (visitor *)
+model_annotation_initializer::visit (visitor *v)
 {
-  // Shouldn't be possible to visit one of these.
-  abort ();
+  v->visit_annotation_initializer (this, element_type, initializers);
 }
 
 void
Index: model/new.hh
===================================================================
--- model/new.hh	2005-10-13 10:52:47.000000000 +0530
+++ model/new.hh	2005-10-13 10:53:19.000000000 +0530
@@ -90,14 +90,14 @@ public:
 /// This is used in the 'primary . new Type' case.
 class model_new_primary : public model_new
 {
+protected:
+
   // The simple name of the class.
   std::string simple_name;
 
   // Type parameters, if any.
   std::list<ref_forwarding_type> type_params;
 
-protected:
-
   void determine_search_class (resolution_scope *, model_class **,
 			       model_class **);
 
Index: visitor.hh
===================================================================
--- visitor.hh	2005-10-13 10:09:11.000000000 +0530
+++ visitor.hh	2005-10-13 10:26:37.000000000 +0530
@@ -530,6 +530,50 @@ public:
                                const ref_forwarding_type &) = 0;
 
   virtual void visit_javadoc (model_javadoc *, bool) = 0;
+
+  virtual void
+  visit_generic_invocation (model_type_qualified_invocation *,
+                            const model_method *,
+                            const std::list<ref_expression> &, bool,
+                            const std::list<ref_forwarding_type> &) = 0;
+
+  virtual void
+  visit_generic_invocation (model_super_invocation *,
+                            const model_method *,
+                            const std::list<ref_expression> &,
+                            const ref_expression &,
+                            const std::list<ref_forwarding_type> &) = 0;
+
+  virtual void
+  visit_generic_invocation (model_this_invocation *, const model_method *,
+                            const std::list<ref_expression> &,
+                            const std::list<ref_forwarding_type> &) = 0;
+
+  virtual void
+  visit_generic_invocation (model_new *, const model_method *,
+                            const ref_forwarding_type &,
+                            const std::list<ref_expression> &,
+                            const std::list<ref_forwarding_type> &) = 0;
+
+  virtual void
+  visit_generic_invocation (model_new_primary *, const model_method *,
+                            const ref_forwarding_type &,
+                            const std::list<ref_expression> &,
+                            const std::string &,
+                            const std::list<ref_forwarding_type> &,
+                            const std::list<ref_forwarding_type> &) = 0;
+
+  virtual void
+  visit_annotation (model_annotation *, const ref_forwarding_type &,
+                    const std::list<ref_annotation_value> &) = 0;
+  virtual void
+  visit_annotation_initializer (model_annotation_initializer *,
+                                const ref_forwarding_type &,
+                                const std::list<ref_expression> &) = 0;
+
+  virtual void visit_memberref_enum (model_memberref_enum *,
+                                     const ref_forwarding_type &,
+                                     const std::string &) = 0;
 };
 
 
Index: fold.cc
===================================================================
--- fold.cc	2005-10-13 10:34:00.000000000 +0530
+++ fold.cc	2005-10-13 10:37:55.000000000 +0530
@@ -970,7 +970,78 @@ public:
   void visit_javadoc (model_javadoc *, bool)
   {
     // Nothing.
-  }  
+  }
+
+  void
+  visit_generic_invocation (model_type_qualified_invocation *tqi,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+			    bool is_super,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_type_qualified_invocation (tqi, meth, args, is_super);
+  }
+
+  void
+  visit_generic_invocation (model_super_invocation *si,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const ref_expression &finit,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_super_invocation (si, meth, args, finit);
+  }
+
+  void
+  visit_generic_invocation (model_this_invocation *ti,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_this_invocation (ti, meth, args);
+  }
+
+  void
+  visit_generic_invocation (model_new *n, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new (n, meth, klass, args);
+  }
+
+  void
+  visit_generic_invocation (model_new_primary *np, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::string &simple_name,
+                            const std::list<ref_forwarding_type> &type_params,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new_primary (np, meth, klass, args, simple_name, type_params);
+  }
+
+  void
+  visit_annotation (model_annotation *, const ref_forwarding_type &,
+                    const std::list<ref_annotation_value> &)
+  {
+    abort ();
+  }
+
+  void
+  visit_annotation_initializer (model_annotation_initializer *,
+                                const ref_forwarding_type &,
+                                const std::list<ref_expression> &)
+  {
+    abort ();
+  }
+
+  void visit_memberref_enum (model_memberref_enum *,
+                             const ref_forwarding_type &,
+                             const std::string &)
+  {
+    abort ();
+  }
 
   ref_expression fold (const ref_expression &expr)
   {
Index: defassign.cc
===================================================================
--- defassign.cc	2005-10-13 10:34:07.000000000 +0530
+++ defassign.cc	2005-10-13 10:38:15.000000000 +0530
@@ -1861,7 +1861,78 @@ public:
   void visit_javadoc (model_javadoc *, bool)
   {
     // Nothing.
-  }  
+  }
+
+  void
+  visit_generic_invocation (model_type_qualified_invocation *tqi,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+			    bool is_super,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_type_qualified_invocation (tqi, meth, args, is_super);
+  }
+
+  void
+  visit_generic_invocation (model_super_invocation *si,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const ref_expression &finit,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_super_invocation (si, meth, args, finit);
+  }
+
+  void
+  visit_generic_invocation (model_this_invocation *ti,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_this_invocation (ti, meth, args);
+  }
+
+  void
+  visit_generic_invocation (model_new *n, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new (n, meth, klass, args);
+  }
+
+  void
+  visit_generic_invocation (model_new_primary *np, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::string &simple_name,
+                            const std::list<ref_forwarding_type> &type_params,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new_primary (np, meth, klass, args, simple_name, type_params);
+  }
+
+  void
+  visit_annotation (model_annotation *, const ref_forwarding_type &,
+                    const std::list<ref_annotation_value> &)
+  {
+    abort ();
+  }
+
+  void
+  visit_annotation_initializer (model_annotation_initializer *,
+                                const ref_forwarding_type &,
+                                const std::list<ref_expression> &)
+  {
+    abort ();
+  }
+
+  void visit_memberref_enum (model_memberref_enum *,
+                             const ref_forwarding_type &,
+                             const std::string &)
+  {
+    abort ();
+  }
 
   // This is a helper for visiting a subexpression.  It handles
   // boolean expressions for the caller, merging final states if
Index: dump.cc
===================================================================
--- dump.cc	2005-10-13 10:34:13.000000000 +0530
+++ dump.cc	2005-10-13 10:38:51.000000000 +0530
@@ -1276,7 +1276,78 @@ public:
   void visit_javadoc (model_javadoc *, bool)
   {
     // Nothing.
-  }  
+  }
+
+  void
+  visit_generic_invocation (model_type_qualified_invocation *tqi,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+			    bool is_super,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_type_qualified_invocation (tqi, meth, args, is_super);
+  }
+
+  void
+  visit_generic_invocation (model_super_invocation *si,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const ref_expression &finit,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_super_invocation (si, meth, args, finit);
+  }
+
+  void
+  visit_generic_invocation (model_this_invocation *ti,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_this_invocation (ti, meth, args);
+  }
+
+  void
+  visit_generic_invocation (model_new *n, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new (n, meth, klass, args);
+  }
+
+  void
+  visit_generic_invocation (model_new_primary *np, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::string &simple_name,
+                            const std::list<ref_forwarding_type> &type_params,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new_primary (np, meth, klass, args, simple_name, type_params);
+  }
+
+  void
+  visit_annotation (model_annotation *, const ref_forwarding_type &,
+                    const std::list<ref_annotation_value> &)
+  {
+    abort ();
+  }
+
+  void
+  visit_annotation_initializer (model_annotation_initializer *,
+                                const ref_forwarding_type &,
+                                const std::list<ref_expression> &)
+  {
+    abort ();
+  }
+
+  void visit_memberref_enum (model_memberref_enum *,
+                             const ref_forwarding_type &,
+                             const std::string &)
+  {
+    abort ();
+  }
 };
 
 /// A simple pretty-printer for the model elements.
@@ -2856,7 +2927,78 @@ public:
   void visit_javadoc (model_javadoc *, bool)
   {
     // TODO.
-  }  
+  }
+
+  void
+  visit_generic_invocation (model_type_qualified_invocation *tqi,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+			    bool is_super,
+                            const std::list<ref_forwarding_type> &)
+  {
+    // TODO.
+  }
+
+  void
+  visit_generic_invocation (model_super_invocation *si,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const ref_expression &finit,
+                            const std::list<ref_forwarding_type> &)
+  {
+    // TODO.
+  }
+
+  void
+  visit_generic_invocation (model_this_invocation *ti,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    // TODO.
+  }
+
+  void
+  visit_generic_invocation (model_new *n, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    // TODO.
+  }
+
+  void
+  visit_generic_invocation (model_new_primary *np, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::string &simple_name,
+                            const std::list<ref_forwarding_type> &type_params,
+                            const std::list<ref_forwarding_type> &)
+  {
+    // TODO.
+  }
+
+  void
+  visit_annotation (model_annotation *, const ref_forwarding_type &,
+                    const std::list<ref_annotation_value> &)
+  {
+    // TODO.
+  }
+
+  void
+  visit_annotation_initializer (model_annotation_initializer *,
+                                const ref_forwarding_type &,
+                                const std::list<ref_expression> &)
+  {
+    // TODO.
+  }
+
+  void visit_memberref_enum (model_memberref_enum *,
+                             const ref_forwarding_type &,
+                             const std::string &)
+  {
+    // TODO.
+  }
 };
 
 void
Index: bytecode/generate.hh
===================================================================
--- bytecode/generate.hh	2005-10-13 10:36:26.000000000 +0530
+++ bytecode/generate.hh	2005-10-13 10:37:36.000000000 +0530
@@ -1053,7 +1053,78 @@ public:
   void visit_javadoc (model_javadoc *, bool)
   {
     // Nothing.
-  }  
+  }
+
+  void
+  visit_generic_invocation (model_type_qualified_invocation *tqi,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+			    bool is_super,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_type_qualified_invocation (tqi, meth, args, is_super);
+  }
+
+  void
+  visit_generic_invocation (model_super_invocation *si,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const ref_expression &finit,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_super_invocation (si, meth, args, finit);
+  }
+
+  void
+  visit_generic_invocation (model_this_invocation *ti,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_this_invocation (ti, meth, args);
+  }
+
+  void
+  visit_generic_invocation (model_new *n, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new (n, meth, klass, args);
+  }
+
+  void
+  visit_generic_invocation (model_new_primary *np, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::string &simple_name,
+                            const std::list<ref_forwarding_type> &type_params,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new_primary (np, meth, klass, args, simple_name, type_params);
+  }
+
+  void
+  visit_annotation (model_annotation *, const ref_forwarding_type &,
+                    const std::list<ref_annotation_value> &)
+  {
+    abort ();
+  }
+
+  void
+  visit_annotation_initializer (model_annotation_initializer *,
+                                const ref_forwarding_type &,
+                                const std::list<ref_expression> &)
+  {
+    abort ();
+  }
+
+  void visit_memberref_enum (model_memberref_enum *,
+                             const ref_forwarding_type &,
+                             const std::string &)
+  {
+    abort ();
+  }
 };
 
 #endif // GCJX_BYTECODE_GENERATE_HH
Index: ChangeLog
from  Ranjit Mathew  <rmathew@gcc.gnu.org>

	* tree.hh (tree_generator::visit_generic_invocation): Implement.
	(tree_generator::visit_annotation): Likewise.
	(tree_generator::visit_annotation_initializer): Likewise.
	(tree_generator::visit_memberref_enum): Likewise.

Index: tree.hh
===================================================================
--- tree.hh	2005-10-13 11:09:57.000000000 +0530
+++ tree.hh	2005-10-13 11:10:24.000000000 +0530
@@ -841,7 +841,78 @@ public:
   void visit_javadoc (model_javadoc *, bool)
   {
     // Nothing.
-  }  
+  }
+
+  void
+  visit_generic_invocation (model_type_qualified_invocation *tqi,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+			    bool is_super,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_type_qualified_invocation (tqi, meth, args, is_super);
+  }
+
+  void
+  visit_generic_invocation (model_super_invocation *si,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const ref_expression &finit,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_super_invocation (si, meth, args, finit);
+  }
+
+  void
+  visit_generic_invocation (model_this_invocation *ti,
+                            const model_method *meth,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_this_invocation (ti, meth, args);
+  }
+
+  void
+  visit_generic_invocation (model_new *n, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new (n, meth, klass, args);
+  }
+
+  void
+  visit_generic_invocation (model_new_primary *np, const model_method *meth,
+                            const ref_forwarding_type &klass,
+                            const std::list<ref_expression> &args,
+                            const std::string &simple_name,
+                            const std::list<ref_forwarding_type> &type_params,
+                            const std::list<ref_forwarding_type> &)
+  {
+    visit_new_primary (np, meth, klass, args, simple_name, type_params);
+  }
+
+  void
+  visit_annotation (model_annotation *, const ref_forwarding_type &,
+                    const std::list<ref_annotation_value> &)
+  {
+    abort ();
+  }
+
+  void
+  visit_annotation_initializer (model_annotation_initializer *,
+                                const ref_forwarding_type &,
+                                const std::list<ref_expression> &)
+  {
+    abort ();
+  }
+
+  void visit_memberref_enum (model_memberref_enum *,
+			     const ref_forwarding_type &,
+			     const std::string &)
+  {
+    abort ();
+  }
 };
 
 #endif // GCC_JAVA_TREE_HH

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]