| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This reverts commit b37f24b7e27a77c398f41cc331608aff806f0d42.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The rules for binary expressions were entirely oblivious to the type of
the operand symbols and assumed they're integer constants.
This is very unfortunate, since it caused all sort of nonsense to end up
getting accepted. One such example is the following define from
NetworkManager's libnm:
#define NM_SETTING_PARAM_SECRET (1 << (2 + G_PARAM_USER_SHIFT))
As G_PARAM_USER_SHIFT is unknown, it was parsed as an invalid symbol.
The addition didn't care, treated it as:
#define NM_SETTING_PARAM_SECRET (1 << (2 + 0))
Let's just ensure we get CSYMBOL_TYPE_CONST only when both operands
actually have const_int_set. Otherwise just create CSYMBOL_TYPE_INVALID.
That will cause the symbol to be dropped on the floor eventually, but
that's probably much better than a having an invalid value.
|
|
|
|
|
|
|
|
| |
Add one expanding to an expression we can't get a constant value from and
another one for which we can.
Note that the bad on one currently does evaluate, and it does so to a
bad value. A separate commit with a diff to test suite will address that.
|
|
|
|
|
|
|
|
|
| |
This reverts commit 8e85d1ca937c166f07675d02fc84abb27d06ae11.
Marking colliding properties as not introspectable breaks
a bunch of existing API when compiling the GIR into the
typelib, so we'll have to find another solution during the
grace period.
|
|
|
|
|
| |
We prefer methods, signals, and virtual methods to properties, in case
of a collision.
|
|
|
|
|
|
|
|
|
|
| |
A fundamental type may or may not provide set and get value functions,
the regress implementations always provide one, so define a new type
with no such functions so that we can test this case in Gjs.
To avoid repeating lots of duplicated code, we re-use the same
functions of RegressTestFundamentalObject when possible, by using the
same structure.
|
|
|
|
| |
Add an accessors pair to Regress.TestObj and annotate them.
|
|\
| |
| |
| |
| | |
Add the notion of standalone doc sections.
See merge request GNOME/gobject-introspection!226
|
| |
| |
| |
| |
| |
| |
| |
| | |
Up to now, section annotations had to match a class or interface
name in order to be serialized in the gir.
With this commit, they now get serialized as docsection nodes,
for potential use by documentation tools.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was previously no mechanism for tagging enum members
and struct fields with Since tags (or other, eg deprecation tags).
While the customary place to add Since tags for these symbols
is inline in the parent symbol's documentation eg:
/**
* Foo:
*
* @FOO_BAR: some bar. Since X.Y
*/
And variations on that theme, implementing parsing for that scheme
would result in a pretty ambiguous grammar, especially if we also
want support for multiple tags.
Instead, the solution implemented here is to allow providing
documentation for individual members and fields through their
own separate block, as is done for virtual functions already.
Inline comments are still used, with a lower precedence.
Fixes #348
|
|
|
|
|
|
| |
Breaks vapigen and changes GListModel definition in Gio-2.0.gir
This reverts commit a9f45431684e6be3623e272e54d481e4c5d9423d.
|
|
|
|
|
|
|
|
| |
GListModel is an interface for creating typed, list-like containers. The
data stored is GObject instances, but it's useful to be able to annotate
the actual type, for both documentation and code generation purposes.
The annotation should be optional, to maintain backward compatibility.
|
|
|
|
|
|
| |
This reverts commit b4c058bba4d95ae10e1e4238f9417fe954f97795.
See: #336
|
|
|
|
|
|
| |
This reverts commit ffe3e435e0b7943a0872034223b5f6ea02258ffa.
See: #336
|
|
|
|
|
|
| |
We need to special case the ListModel container type in the
documentation writer so that we don't fall back into array/list
automatic conversion in the code snippets.
|
|
|
|
|
|
|
|
| |
GListModel is an interface for creating typed, list-like containers. The
data stored is GObject instances, but it's useful to be able to annotate
the actual type, for both documentation and code generation purposes.
Fixes: #328
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
C99 allows defining an array argument with a fixed size as:
void foo (int arr[static 10])
Compilers conforming to the C99 specification will be able to warn if
the function is called with NULL or with an array smaller than the
specified length, something that does not happen when using pre-C99
declarations like:
void foo (int arr[10])
As the declaration above is identical to:
void foo (int arr[])
Which is, in turn, identical to:
void foo (int *arr)
Fixes: #309
|
|
|
|
|
|
|
|
| |
This exercises the little-used code path where a signal is emitted with
a nullable GError as a parameter. It's modeled after
GstPbutils.Discoverer's 'discovered' signal.
See GNOME/gjs#262.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Relatively common in practice are:
* output with transfer full, which is already covered by
`regress_test_array_struct_out`,
* input with transfer none, covered by a new
`regress_test_array_struct_in_none`
Other variants are quite esoteric, but it still might be useful to
include them so that bindings can verify that they are handled
gracefully, e.g., by reporting an error instead of crashing.
Issue #90
|
|
|
|
|
|
|
|
|
|
|
| |
This is necessary to parse types like `unsigned char` or `long double`,
and is already done when parsing `declarations_specifiers`. Examples
that are fixed by this change include:
* `GLib.TestLogMsg.nums` previously parsed as `long` but should be `long
double`.
* `GMime.Encoding.uubuf` previously parsed as `unsigned` but should be
`unsigned char`.
|
| |
|
|
|
|
|
|
|
|
| |
This adds a property to RegressTestInterface which can be overridden, and
makes RegressTestSubObj implement it and override the property. This is
in order to catch the regressions in GJS around property access.
See gjs#193.
|
|
|
|
|
|
|
| |
GTK contains a few write-only properties, so it makes sense to have one
in the regress test suite.
See gjs!246
|
|
|
|
|
| |
It was added as part of !25 but without any implementation.
This made instantiating TestObject fail which we do in the pygobject test suite.
|
|
|
|
| |
These tests only get run with autotools atm
|
| |
|
|
|
|
|
|
|
|
| |
Macro constants may now refer to constants defined in source files.
Test case provided by Philip Chimento.
Fixes issues #173 and #75.
|
|
|
|
|
|
|
| |
Value assignments can happen at any point in the enumeration
declaration.
https://bugzilla.gnome.org/show_bug.cgi?id=629667
|
|
|
|
|
|
|
|
|
|
| |
This is something that libraries are not supposed to do, but some do
anyway (Soup and Clutter are two examples) and language bindings should
handle it somehow or other. In GJS we want to make sure that the way it's
handled doesn't change inadvertently, because buggy library code should
not break existing user code.
https://bugzilla.gnome.org/show_bug.cgi?id=785091
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"(in) (transfer none)".
The "(in)" alias was (unintenionally?) introduced in
https://git.gnome.org/browse/gobject-introspection/commit/?id=699ad0fec427c79bec1
which added an alias for return annotations. This change makes sure that this continues
to work.
Functions which ref_sink in params are currently marked as transfer-none since in the
case of non-floating objects (which all bindings use) no ownership gets transfered.
But in case of floating objects, which is the common case when using the C API directly,
the ownership _is_ transfered. Using transfer-floating should make this clearer
while giving the same result for bindings.
Functions where this could be used: gst_bin_add, gtk_container_add, gst_element_add_pad
See https://bugzilla.gnome.org/show_bug.cgi?id=657202 and https://bugzilla.gnome.org/show_bug.cgi?id=702960
https://bugzilla.gnome.org/show_bug.cgi?id=742618
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=775679
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=760056
|
|
|
|
|
|
|
| |
C11 which added support for anonymous unions (already supported)
also adds support for anonymous structs.
https://bugzilla.gnome.org/show_bug.cgi?id=766011
|
|
|
|
|
|
|
|
| |
This is a regression test for marshalling callback arguments from signals
with an array parameter and separate length parameter into closures in
the introspected language.
https://bugzilla.gnome.org/show_bug.cgi?id=761659
|
|
|
|
|
|
|
| |
This is a regression test for returning out arrays of structs, like
gdk_keymap_get_entries_for_keyval() for example.
https://bugzilla.gnome.org/show_bug.cgi?id=761658
|
|
|
|
|
|
|
|
|
|
|
|
| |
On bug #719966, the question arose of whether parameters annotated with
(element-type) but not (not nullable) are regarded as nullable or
non-nullable.
Add some new unit tests to Regress-1.0.gir to check the behaviour is as
expected: annotating a parameter with (element-type) implicitly makes it
non-nullable (unless also annotated with (nullable)).
https://bugzilla.gnome.org/show_bug.cgi?id=757678
|
|
|
|
|
|
|
|
|
|
| |
g-ir-scanner now supports something like this:
typedef void my_callback(int);
Notice how my_callback is not a pointer.
https://bugzilla.gnome.org/show_bug.cgi?id=755645
|
|
|
|
|
|
|
|
| |
The optional annotation was being applied which
is invalid for return values.
https://bugzilla.gnome.org/show_bug.cgi?id=752029
Signed-off-by: Garrett Regier <garrett.regier@riftio.com>
|
| |
|
|
|
|
| |
Related to: https://bugzilla.gnome.org/719966
|
|
|
|
|
|
| |
See https://bugzilla.gnome.org/show_bug.cgi?id=749696
https://bugzilla.gnome.org/show_bug.cgi?id=751978
|
|
|
|
|
| |
Add missing doc-tool tests, fixes "make distcheck" breakage
introduced by 09daa28c5b4625b6f274b3b340bc85e33bef80b5
|
|
|
|
|
|
|
|
|
| |
We have special code to look at (type GLib.List(utf8)), but (type
GLib.PtrArray(utf8)) didn't work.
This allows NetworkManager to annotate the ActiveConnections property.
https://bugzilla.gnome.org/show_bug.cgi?id=733879
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=702508
|
|
|
|
|
|
|
|
|
|
|
| |
Knowing the ownership transfer for instance parameters is
necessary for correct memory management of functions which
"eat" their instance argument, such as g_dbus_method_invocation_return_*.
Parse this information from the gir file and store in the
typelib, and then provide new API on GICallableInfo to
retrieve this.
https://bugzilla.gnome.org/show_bug.cgi?id=729662
|
| |
|
|
|
|
|
|
| |
Add missing page needed for tests to run after commit 7027bb256
https://bugzilla.gnome.org/show_bug.cgi?id=725198
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use ParseState enum instead of a boolean for the ParseContexts embedded_type
flag. This allows specific tracking of the embedded type currently being
parsed which can now either be STATE_STRUCT_FIELD or STATE_CLASS_FIELD (or
allow for future expansion). Add ParseState::STATE_NONE as the default for
this field.
Fix GObject FieldBlob validation to take into account the sizeof
CallbackBlobs (copied from the struct validator).
Add static g_object_info_get_field_offset which parallels
g_struct_info_get_field_offset which is needed since callback fields may
vary in size.
https://bugzilla.gnome.org/show_bug.cgi?id=725198
|
| |
|