public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* java/5178: Method call on qualified static field doesn't initialize its class
@ 2001-12-22 16:06 bryce
  0 siblings, 0 replies; only message in thread
From: bryce @ 2001-12-22 16:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         5178
>Category:       java
>Synopsis:       Method call on qualified static field doesn't initialize its class
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Dec 22 16:06:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Bryce McKinlay
>Release:        gcc version 3.1 20011221 (experimental)
>Organization:
>Environment:

>Description:
The test case below, derived from PR375.java, crashes because no class initialization for "Bar" is generated. This occurs when the qualified field name is enclosed in brackets but not otherwise.

In the case which works, java_complete_lhs sees a CALL_EXPR and calls patch_method_invocation, which sees that the call is qualified and uses cut_identifier_in_qualified to "cut" the last element off the WFL identifier chain. resolve_qualified_expression_name sets found_decl to a DECL, which is wrapped with a class initialization in resolve_field_access.

In the broken case, java_complete_lhs sees a EXPR_WITH_FILE_LOCATION and calls resolve_expression_name. resolve_qualified_expression_name sees the CALL_EXPR on the end of the WFL chain (because no "cut" has occured - but should it be there in the first place?) and ends up in the code for "Field access using a primary" which seems wrong, setting found_decl to a CALL_EXPR which subsquently confuses resolve_field_access into not building a class initialization.

This may also be what causes the problem RTH saw on Alpha with the same test case:

http://gcc.gnu.org/ml/java-patches/2001-q4/msg00501.html

>How-To-Repeat:
class Bar 
{
  static Integer I = new Integer(1);
}

public class Qual
{
  public static void main(String[] args)
  {
    // System.out.println (Bar.I.toString());  // ok
    System.out.println ((Bar.I).toString());   // crash
  }
}
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2001-12-23  0:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-12-22 16:06 java/5178: Method call on qualified static field doesn't initialize its class bryce

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).