diff options
author | Giovanni Campagna <gcampagna@src.gnome.org> | 2014-02-20 02:35:23 +0100 |
---|---|---|
committer | Giovanni Campagna <gcampagna@src.gnome.org> | 2014-02-20 02:40:03 +0100 |
commit | 6cc9207cbdb1328c746e0899f459bb09d1e3e954 (patch) | |
tree | b73473301bb202ea882c966ffadb3accbeab8ed4 | |
parent | e70abadf0dd7d5312311926ec5b5130e1933d83b (diff) | |
download | gobject-introspection-6cc9207cbdb1328c746e0899f459bb09d1e3e954.tar.gz |
doctool/Gjs: some more fixes for structs and unions
Stop pretending we have fields on unions (only methods are
supported).
Add minimal support (ie, don't crash) to nested structures,
that due to how ast works have namespace None (and the
transformers hard-depend on that). Uncovered by GLib's
GDoubleIEEE754, before I removed union fields.
For some reason, RegressTestStructE (anonymous union) has a
completely different behavior and generates a weird name,
while RegressLikeGnomeKeyringSchema (array of unnamed structs)
becomes array(gpointer).
Bah, one should have methods anyway...
22 files changed, 18 insertions, 331 deletions
diff --git a/giscanner/doctemplates/Gjs/class.tmpl b/giscanner/doctemplates/Gjs/class.tmpl index d8433704..7694d726 100644 --- a/giscanner/doctemplates/Gjs/class.tmpl +++ b/giscanner/doctemplates/Gjs/class.tmpl @@ -1,6 +1,8 @@ <%inherit file="/class.tmpl"/> <%block name="synopsis"> - <synopsis><code> + <synopsis>\ +% if node.namespace is not None: +<code> const ${namespace.name} = imports.gi.${namespace.name}; let ${formatter.to_lower_camel_case(node.name)} = new ${namespace.name}.${node.name}(\ @@ -18,4 +20,11 @@ let ${formatter.to_lower_camel_case(node.name)} = new ${namespace.name}.${node.n ${formatter.format_gboxed_constructor(node)}\ % endif ); - </code></synopsis></%block> + </code>\ +% else: + <p> + This structure is inside ${node.parent.namespace.name}.${node.parent.name} + and can only be used as a field of that. + </p> +% endif +</synopsis></%block> diff --git a/giscanner/docwriter.py b/giscanner/docwriter.py index 75a2b03b..92fa127a 100644 --- a/giscanner/docwriter.py +++ b/giscanner/docwriter.py @@ -597,7 +597,7 @@ class DocFormatterGjs(DocFormatterIntrospectableBase): if isinstance(node, ast.Field): if node.type is None: return False - if isinstance(node.parent, ast.Class): + if isinstance(node.parent, (ast.Class, ast.Union)): return False if isinstance(node, ast.Union) and node.name is None: return False @@ -775,6 +775,8 @@ class DocFormatterGjs(DocFormatterIntrospectableBase): return False if node.private: return False + if isinstance(node.parent, ast.Union): + return False if node.type.target_fundamental not in \ (None, 'none', 'gpointer', 'utf8', 'filename', 'va_list'): return True diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-rect.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-rect.page deleted file mode 100644 index 8a4f98af..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-rect.page +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.FooBUnion-rect" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.FooBUnion" group="field" type="guide"/> - <title type="link" role="topic">rect</title> - </info> - <title>Regress.FooBUnion.rect</title> - <synopsis><code mime="text/x-gjs"> -FooBUnion.rect: <link xref="Regress.FooBRect">Regress.FooBRect</link> (Read) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-type.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-type.page deleted file mode 100644 index 361f8622..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-type.page +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.FooBUnion-type" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.FooBUnion" group="field" type="guide"/> - <title type="link" role="topic">type</title> - </info> - <title>Regress.FooBUnion.type</title> - <synopsis><code mime="text/x-gjs"> -FooBUnion.type: Number(gint) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-v.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-v.page deleted file mode 100644 index 1ab80587..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion-v.page +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.FooBUnion-v" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.FooBUnion" group="field" type="guide"/> - <title type="link" role="topic">v</title> - </info> - <title>Regress.FooBUnion.v</title> - <synopsis><code mime="text/x-gjs"> -FooBUnion.v: Number(gdouble) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page index 91f431b8..a5ef038a 100644 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page @@ -12,10 +12,7 @@ <synopsis><code> const Regress = imports.gi.Regress; -let fooBUnion = new Regress.FooBUnion({ - <link xref='Regress.FooBUnion-type'>type</link>: value - <link xref='Regress.FooBUnion-v'>v</link>: value -}); +let fooBUnion = new Regress.FooBUnion(); </code></synopsis> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-any.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-any.page deleted file mode 100644 index 77ea5f14..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-any.page +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.FooEvent-any" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.FooEvent" group="field" type="guide"/> - <title type="link" role="topic">any</title> - </info> - <title>Regress.FooEvent.any</title> - <synopsis><code mime="text/x-gjs"> -FooEvent.any: <link xref="Regress.FooEventAny">Regress.FooEventAny</link> (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-expose.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-expose.page deleted file mode 100644 index 8bd11ea4..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-expose.page +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.FooEvent-expose" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.FooEvent" group="field" type="guide"/> - <title type="link" role="topic">expose</title> - </info> - <title>Regress.FooEvent.expose</title> - <synopsis><code mime="text/x-gjs"> -FooEvent.expose: <link xref="Regress.FooEventExpose">Regress.FooEventExpose</link> (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-type.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-type.page deleted file mode 100644 index 37c6ab54..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent-type.page +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.FooEvent-type" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.FooEvent" group="field" type="guide"/> - <title type="link" role="topic">type</title> - </info> - <title>Regress.FooEvent.type</title> - <synopsis><code mime="text/x-gjs"> -FooEvent.type: Number(gint) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page index 7a6f3d16..8bd91a37 100644 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page @@ -12,11 +12,7 @@ <synopsis><code> const Regress = imports.gi.Regress; -let fooEvent = new Regress.FooEvent({ - <link xref='Regress.FooEvent-type'>type</link>: value - <link xref='Regress.FooEvent-any'>any</link>: value - <link xref='Regress.FooEvent-expose'>expose</link>: value -}); +let fooEvent = new Regress.FooEvent(); </code></synopsis> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion-regress_foo.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion-regress_foo.page deleted file mode 100644 index 2107a554..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion-regress_foo.page +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.FooUnion-regress_foo" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.FooUnion" group="field" type="guide"/> - <title type="link" role="topic">regress_foo</title> - </info> - <title>Regress.FooUnion.regress_foo</title> - <synopsis><code mime="text/x-gjs"> -FooUnion.regress_foo: Number(gint) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page index 9765253e..a824d6fd 100644 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page @@ -12,9 +12,7 @@ <synopsis><code> const Regress = imports.gi.Regress; -let fooUnion = new Regress.FooUnion({ - <link xref='Regress.FooUnion-regress_foo'>regress_foo</link>: value -}); +let fooUnion = new Regress.FooUnion(); </code></synopsis> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_double.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_double.page deleted file mode 100644 index 2861829b..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_double.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_double" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_double</title> - </info> - <title>Regress.TestStructE__some_union__union.v_double</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_double: Number(gdouble) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_float.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_float.page deleted file mode 100644 index fb1222e4..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_float.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_float" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_float</title> - </info> - <title>Regress.TestStructE__some_union__union.v_float</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_float: Number(gfloat) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_int.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_int.page deleted file mode 100644 index 91b82a8f..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_int.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_int" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_int</title> - </info> - <title>Regress.TestStructE__some_union__union.v_int</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_int: Number(gint) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_int64.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_int64.page deleted file mode 100644 index eadfcaff..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_int64.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_int64" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_int64</title> - </info> - <title>Regress.TestStructE__some_union__union.v_int64</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_int64: Number(gint64) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_long.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_long.page deleted file mode 100644 index 6594a30e..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_long.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_long" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_long</title> - </info> - <title>Regress.TestStructE__some_union__union.v_long</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_long: Number(glong) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_pointer.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_pointer.page deleted file mode 100644 index 479865f1..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_pointer.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_pointer" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_pointer</title> - </info> - <title>Regress.TestStructE__some_union__union.v_pointer</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_pointer: void (Read) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_uint.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_uint.page deleted file mode 100644 index ea437b38..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_uint.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_uint" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_uint</title> - </info> - <title>Regress.TestStructE__some_union__union.v_uint</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_uint: Number(guint) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_uint64.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_uint64.page deleted file mode 100644 index 9de3409b..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_uint64.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_uint64" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_uint64</title> - </info> - <title>Regress.TestStructE__some_union__union.v_uint64</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_uint64: Number(guint64) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_ulong.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_ulong.page deleted file mode 100644 index 7b6aa205..00000000 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union-v_ulong.page +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<page id="Regress.TestStructE__some_union__union-v_ulong" - type="topic" - style="field" - xmlns="http://projectmallard.org/1.0/" - xmlns:api="http://projectmallard.org/experimental/api/" - xmlns:ui="http://projectmallard.org/1.0/ui/"> - <info> - <link xref="Regress.TestStructE__some_union__union" - group="field" - type="guide"/> - <title type="link" role="topic">v_ulong</title> - </info> - <title>Regress.TestStructE__some_union__union.v_ulong</title> - <synopsis><code mime="text/x-gjs"> -TestStructE__some_union__union.v_ulong: Number(gulong) (Read / Write) - </code></synopsis> - - -</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page index 38ee2695..493e96de 100644 --- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page @@ -12,16 +12,7 @@ <synopsis><code> const Regress = imports.gi.Regress; -let testStructE__some_union__union = new Regress.TestStructE__some_union__union({ - <link xref='Regress.TestStructE__some_union__union-v_int'>v_int</link>: value - <link xref='Regress.TestStructE__some_union__union-v_uint'>v_uint</link>: value - <link xref='Regress.TestStructE__some_union__union-v_long'>v_long</link>: value - <link xref='Regress.TestStructE__some_union__union-v_ulong'>v_ulong</link>: value - <link xref='Regress.TestStructE__some_union__union-v_int64'>v_int64</link>: value - <link xref='Regress.TestStructE__some_union__union-v_uint64'>v_uint64</link>: value - <link xref='Regress.TestStructE__some_union__union-v_float'>v_float</link>: value - <link xref='Regress.TestStructE__some_union__union-v_double'>v_double</link>: value -}); +let testStructE__some_union__union = new Regress.TestStructE__some_union__union(); </code></synopsis> |