public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: bryce@waitaki.otago.ac.nz
To: gcc-gnats@gcc.gnu.org
Subject: java/5178: Method call on qualified static field doesn't initialize its class
Date: Sat, 22 Dec 2001 16:06:00 -0000	[thread overview]
Message-ID: <20011223000201.8569.qmail@sources.redhat.com> (raw)


>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:


                 reply	other threads:[~2001-12-23  0:06 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20011223000201.8569.qmail@sources.redhat.com \
    --to=bryce@waitaki.otago.ac.nz \
    --cc=gcc-gnats@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).