This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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: Fix ObjC class name lookup



I already reported this bug and asked your approval to apply the fix -

http://gcc.gnu.org/ml/gcc-patches/2001-11/msg01326.html

but you ignored me.


I'm still waiting for your approval about 

http://gcc.gnu.org/ml/gcc-patches/2001-12/msg00556.html


> Recent changes in class message handling code scrambled some parens,
> resulting in a subtle bug where a class message could garner a
> mysterious complaint about void values, if there was a void method
> of the same name.  Since it took me a couple hours to prune down
> 100K of header to find the conflicting method, I've added a simple
> example as the first test in a newly-created testsuite/objc/compile
> directory.
> 
> Stan
> 
> ChangeLog:
> 2001-12-11  Stan Shebs  <shebs@apple.com>
> 
>         * objc/objc-act.c (finish_message_expr): Fix misplaced parens in a
>         test of class names.
> 
> testsuite/ChangeLog:
> 2001-12-11  Stan Shebs  <shebs@apple.com>
> 
>         * objc/compile: New test directory.
>         * objc/compile/compile.exp: New expect script.
>         * objc/compile/20011211-1.m: New compile test.
> 
> Index: objc/objc-act.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/objc/objc-act.c,v
> retrieving revision 1.112
> diff -c -3 -p -r1.112 objc-act.c
> *** objc-act.c  2001/12/04 00:25:20     1.112
> --- objc-act.c  2001/12/11 18:10:25
> *************** finish_message_expr (receiver, sel_name,
> *** 4832,4839 ****
>                && TREE_STATIC_TEMPLATE (TREE_TYPE (rtype)))
>         statically_typed = 1;
>         else if ((flag_next_runtime
> !               || (IS_ID (rtype)
> !                   && (class_ident = receiver_is_class_object (receiver)))))
>         ;
>         else if (! IS_ID (rtype)
>                /* Allow any type that matches objc_class_type.  */
> --- 4832,4839 ----
>                && TREE_STATIC_TEMPLATE (TREE_TYPE (rtype)))
>         statically_typed = 1;
>         else if ((flag_next_runtime
> !               || (IS_ID (rtype)))
> !              && (class_ident = receiver_is_class_object (receiver)))
>         ;
>         else if (! IS_ID (rtype)
>                /* Allow any type that matches objc_class_type.  */
> Index: testsuite/objc/compile/20011211-1.m
> ===================================================================
> RCS file: 20011211-1.m
> diff -N 20011211-1.m
> *** /dev/null   Tue May  5 13:32:27 1998
> --- 20011211-1.m        Tue Dec 11 10:10:25 2001
> ***************
> *** 0 ****
> --- 1,19 ----
> + typedef struct objc_class *Class;
> + 
> + typedef struct objc_object {
> +   Class isa;
> + } *id;
> + 
> + @interface nsset
> + + (id)set;
> + @end
> + 
> + @interface baz
> + - (void)set;
> + @end
> + 
> + nsset *fn ()
> + {
> +   nsset *bar;
> +   bar = [nsset set];
> + }
> Index: testsuite/objc/compile/compile.exp
> ===================================================================
> RCS file: compile.exp
> diff -N compile.exp
> *** /dev/null   Tue May  5 13:32:27 1998
> --- compile.exp Tue Dec 11 10:10:25 2001
> ***************
> *** 0 ****
> --- 1,38 ----
> + # Copyright (C) 1991, 1992, 1993, 1995, 1997, 2001 Free Software Foundation, Inc.
> + 
> + # This program is free software; you can redistribute it and/or modify
> + # it under the terms of the GNU General Public License as published by
> + # the Free Software Foundation; either version 2 of the License, or
> + # (at your option) any later version.
> + # 
> + # This program is distributed in the hope that it will be useful,
> + # but WITHOUT ANY WARRANTY; without even the implied warranty of
> + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + # GNU General Public License for more details.
> + # 
> + # You should have received a copy of the GNU General Public License
> + # along with this program; if not, write to the Free Software
> + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
> + 
> + # This file was written by Rob Savoye. (rob@cygnus.com)
> + # Modified by Stan Shebs <shebs@apple.com>
> + 
> + if $tracelevel then {
> +     strace $tracelevel
> + }
> + 
> + # load support procs
> + load_lib objc-torture.exp
> + 
> + #
> + # main test loop
> + #
> + 
> + foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] {
> +     # If we're only testing specific files and this isn't one of them, skip it.
> +     if ![runtest_file_p $runtests $src] then {
> +       continue
> +     }
> + 
> +     objc-torture $src
> + }
> 


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