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]

[gcjx] Patch: FYI: field annotations fix


I'm checking this in on the gcjx branch.

We were pushing a warning scope in the field resolution code before
field annotations had been resolved.  This fixes the problem by moving
the code into the model_variable_decl resolver instead.

Tom

Index: ChangeLog
from  Tom Tromey  <tromey@redhat.com>

	* model/field.cc (resolve_classes): Don't push warning scope.
	* model/variable.cc (resolve_classes): Resolve annotations
	first.  Push warning scope.
	(resolve): Likewise.

Index: model/field.cc
===================================================================
--- model/field.cc	(revision 107604)
+++ model/field.cc	(working copy)
@@ -82,7 +82,6 @@
   if (state < CLASSES)
     {
       state = CLASSES;
-      resolution_scope::push_warnings warn_holder (scope, this);
       model_variable_decl::resolve_classes (scope);
     }
 }
@@ -134,9 +133,11 @@
   if (state < RESOLVED)
     {
       state = RESOLVED;
-      resolution_scope::push_warnings warn_holder (scope, this);
       model_variable_decl::resolve (scope);
 
+      // Ideally this warning push would be done in
+      // model_variable_decl.
+      resolution_scope::push_warnings warn_holder (scope, this);
       if (scope->warn_bad_serialization_field ())
 	check_serialization_fields ();
     }
Index: model/variable.cc
===================================================================
--- model/variable.cc	(revision 107604)
+++ model/variable.cc	(working copy)
@@ -24,14 +24,16 @@
 void
 model_variable_decl::resolve_classes (resolution_scope *scope)
 {
+  resolve_annotation_classes (scope);
+  resolution_scope::push_warnings warn_holder (scope, this);
   decltype->resolve (scope);
-  resolve_annotation_classes (scope);
 }
 
 void
 model_variable_decl::resolve (resolution_scope *scope)
 {
   resolve_annotations (scope);
+  resolution_scope::push_warnings warn_holder (scope, this);
   decltype->resolve (scope);  // fixme redundant for fields...
   if (initializer)
     {


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