+2008-11-11 Tommi Komulainen <tommi.komulainen@iki.fi>
+
+ Bug 560308 – g-ir-compiler goes in infinite loop on Gdk-2.0.gir
+
+ Based on patch by Johan Bilien.
+
+ * giscanner/transformer.py (_create_member, _create_parameter):
+ Resolve types here as well.
+ (_resolve_type_name_1): Try resolving using 'ctype' first since
+ it's least ambiguous. Fixes struct member type resolution with
+ similarly named types, e.g. Gdk.PangoRendererClass and
+ Pango.RendererClass
+ * tests/scanner/foo*: Add test.
+
2008-11-11 Owen Taylor <otaylor@redhat.com>
* girepository/girparser.c: Search provided include dirs before
size_opt = 'fixed-size=%d' % (child_list[0].const_int, )
opts['array'].append(size_opt)
ftype = self._create_type(symbol.base_type, opts, True)
+ ftype = self.resolve_param_type(ftype)
# Fields are assumed to be read-write
# (except for Objects, see also glibtransformer.py)
node = Field(symbol.ident, ftype, symbol.ident,
options['transfer'] = ['none']
else:
ptype = self._create_type(symbol.base_type, options, True)
+ ptype = self.resolve_param_type(ptype)
param = Parameter(symbol.ident, ptype)
for option, data in options.iteritems():
if option in ['in-out', 'inout']:
return type_names[type_name]
except KeyError, e:
pass
+
+ if ctype:
+ ctype = ctype.replace('*', '')
+ resolved = names.ctypes.get(ctype)
+ if resolved:
+ return self._typepair_to_str(resolved)
type_name = self.remove_prefix(type_name)
resolved = names.aliases.get(type_name)
if resolved:
resolved = names.names.get(type_name)
if resolved:
return self._typepair_to_str(resolved)
- if ctype:
- ctype = ctype.replace('*', '')
- resolved = names.ctypes.get(ctype)
- if resolved:
- return self._typepair_to_str(resolved)
resolved = names.type_names.get(type_name)
if resolved:
return self._typepair_to_str(resolved)
<type name="int" c:type="int"/>
</field>
</union>
+ <record name="UtilityStruct" c:type="FooUtilityStruct">
+ <field name="bar" writable="1">
+ <type name="utility.Struct" c:type="UtilityStruct"/>
+ </field>
+ </record>
<function name="test_unsigned_qualifier"
c:identifier="foo_test_unsigned_qualifier">
<return-value transfer-ownership="none">