]> gcc.gnu.org Git - gcc.git/blame - gcc/objc/objc-tree.def
Update copyright years.
[gcc.git] / gcc / objc / objc-tree.def
CommitLineData
ec21bae2
RS
1/* This file contains the definitions and documentation for the
2 additional tree codes used in the Objective C front end (see tree.def
3 for the standard codes).
818ab71a 4 Copyright (C) 1990-2016 Free Software Foundation, Inc.
ec21bae2 5
b9593599 6This file is part of GCC.
ec21bae2 7
b9593599 8GCC is free software; you can redistribute it and/or modify
ec21bae2 9it under the terms of the GNU General Public License as published by
2b7d992a 10the Free Software Foundation; either version 3, or (at your option)
ec21bae2
RS
11any later version.
12
b9593599 13GCC is distributed in the hope that it will be useful,
ec21bae2
RS
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
2b7d992a
NC
19along with GCC; see the file COPYING3. If not see
20<http://www.gnu.org/licenses/>. */
ec21bae2
RS
21
22
f620c21b 23/* Objective-C types. */
6615c446
JO
24DEFTREECODE (CLASS_INTERFACE_TYPE, "class_interface_type", tcc_type, 0)
25DEFTREECODE (CLASS_IMPLEMENTATION_TYPE, "class_implementation_type",
26 tcc_type, 0)
27DEFTREECODE (CATEGORY_INTERFACE_TYPE, "category_interface_type", tcc_type, 0)
28DEFTREECODE (CATEGORY_IMPLEMENTATION_TYPE,"category_implementation_type",
29 tcc_type, 0)
30DEFTREECODE (PROTOCOL_INTERFACE_TYPE, "protocol_interface_type", tcc_type, 0)
f620c21b
TW
31
32/* Objective-C decls. */
6615c446
JO
33DEFTREECODE (KEYWORD_DECL, "keyword_decl", tcc_declaration, 0)
34DEFTREECODE (INSTANCE_METHOD_DECL, "instance_method_decl", tcc_declaration, 0)
35DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", tcc_declaration, 0)
668ea4b1 36DEFTREECODE (PROPERTY_DECL, "property_decl", tcc_declaration, 0)
264fa2db
ZL
37
38/* Objective-C expressions. */
6615c446
JO
39DEFTREECODE (MESSAGE_SEND_EXPR, "message_send_expr", tcc_expression, 3)
40DEFTREECODE (CLASS_REFERENCE_EXPR, "class_reference_expr", tcc_expression, 1)
5c234cd7 41
46a88c12
NP
42/* This tree is used to represent the expression 'object.property',
43 where 'object' is an Objective-C object and 'property' is an
44 Objective-C property. Operand 0 is the object (the tree
45 representing the expression), and Operand 1 is the property (the
a9625a91
NP
46 PROPERTY_DECL). Operand 2 is the 'getter' call, ready to be used;
47 we pregenerate it because it is hard to generate it properly later
b4f588c4
NP
48 on. Operand 3 records whether using the 'getter' call should
49 generate a deprecation warning or not.
50
51 A PROPERTY_REF tree needs to be transformed into 'setter' and
a9625a91
NP
52 'getter' calls at some point; at the moment this happens in two
53 places:
46a88c12
NP
54
55 * if we detect that a modify expression is being applied to a
56 PROPERTY_REF, then we transform that into a 'getter' call (this
57 happens in build_modify_expr() or cp_build_modify_expr()).
58
59 * else, it will remain as a PROPERTY_REF until we get to
60 gimplification; at that point, we convert each PROPERTY_REF into
a9625a91
NP
61 a 'getter' call during ObjC/ObjC++ gimplify. At that point, it
62 is quite hard to build a 'getter' call, but we have already built
b4f588c4
NP
63 it and we just need to swap Operand 2 in, and emit the deprecation
64 warnings from Operand 3 if needed.
43236c26 65
944fb799 66 Please note that when the Objective-C 2.0 "dot-syntax" 'object.component'
43236c26
NP
67 is encountered, where 'component' is not a property but there are valid
68 setter/getter methods for it, an artificial PROPERTY_DECL is generated
69 and used in the PROPERTY_REF. */
b4f588c4 70DEFTREECODE (PROPERTY_REF, "property_ref", tcc_expression, 4)
46a88c12 71
5c234cd7
DA
72/*
73Local variables:
74mode:c
75End:
76*/
This page took 6.224148 seconds and 5 git commands to generate.