| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Apply the logic of previous commit to the array gvariant container
function, so that bindings can test better the memory handling of those
cases.
|
|
|
|
|
|
|
|
|
|
| |
We marked GVariant arrays containing floating references as
transfer-full and this is leading bindings (i.e. gjs) to misleading
behavior (see https://gitlab.gnome.org/GNOME/gjs/-/issues/499).
This was definitely wrong, in fact a function returning a floating
reference should have been transfer none, and so in this case the actual
function transfer would have been container.
|
|
|
|
| |
Required to test how gjs handles this case.
|
|
|
|
| |
We were leaking this, and so it was a false positive for the bindings
|
|
|
|
|
|
|
| |
These are part of the array that we return, so there's no need to
allocate a new structure.
And this was leading to false positive leaks in bindings.
|
|
|
|
|
|
|
|
| |
https://github.com/mesonbuild/meson/pull/10275 introduced
support in meson to use uninstalled .pc files in the meson-uninstalled
directory to resolve dependencies built with subprojects.
Replicate the same solution while all the custom_target
are migrated to gnome.generate_dir
|
|
|
|
|
|
| |
- assertEqual(value, None) → assertIsNone(value)
- assertTrue(value is not None) → assertIsNotNone(value)
- assertTrue(isinstance(value, Type)) → assertIsInstance(value, Type)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The disguised attribute started off as a way to indicate a typedef to a
structure pointer, e.g.
typedef struct Foo* FooPtr;
Over the years, though, it started to include opaque structure types,
e.g.
typedef struct _FooObject FooObject;
typedef struct _FooObjectClass FooObjectClass;
This has led to issues in language bindings, code generators, and
documentation generators, which now have issues when dealing with both
pointer aliases and opaque types.
An initial attempt at fixing this mess in commit f606183a ended up
breaking Vala, and had to be reverted.
To avoid breaking existing users we can follow a similar approach to the
allow-none/nullable/optional solution:
1. introduce a new pair of attributes: "pointer" and "opaque"
2. deprecate the "disguised" attribute
The "pointer" attribute covers the case of pointer types.
The "opaque" attribute covers the case of opaque structured types.
See also: https://gitlab.gnome.org/GNOME/vala/-/issues/735
Fixes: #101
|
|
|
|
| |
This reverts commit b37f24b7e27a77c398f41cc331608aff806f0d42.
|
|
|
|
|
| |
A GIMarshallingTestsBoxedStruct includes a GStrv, but we don't copy or
free it properly.
|
| |
|
|
|
|
|
|
|
| |
An escape hatch to specify a freeform string for the default value of a
property.
Fixes: #4
|
|
|
|
|
|
|
| |
If we can't transform a property default value to string, we are not
going to add a default-value attribute to the GIR. This is necessary
because non-transformable values may not always be pointers, so we
cannot default to "NULL".
|
|
|
|
|
|
|
|
|
| |
The default-value attribute for a property element is fundamentally
meant for documentation generators.
We only care about the GIR data, as the conversion from the default
value to a string is lossy by definition, and may very well not
roundtrip.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 allows to perform more introspection tests in gjs and other
implementations when it comes to set/get fields or "cast" an union
member to the main union type
|
|
|
|
|
|
|
| |
Such kind of arrays can be easily be allocated as we know the size of
each array element.
See: https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/806
|
| |
|
|
|
|
|
| |
The test returns a newly allocated GValue, so it should not be marked
transfer none.
|
|
|
|
| |
The `check` argument to `run_command()` is now mandatory.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
We can use them in Gjs to verify whether a value is properly packed
and unpacked to GValue.
|
|
|
|
| |
It's the only basic type missing, better to have for consistency.
|
|
|
|
|
| |
We want to be able to test whether it's possible to convert two
different fundamental types through GValue, so add a function for this.
|
|
|
|
|
| |
This can be used to test we don't do unexpected conversions between
invalid types.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The hack that copies the doctemplates directory into the build
directory has stopped working with newer versions of Meson; while it's
possible to copy files, custom_target() cannot depend on a directory.
Additionally, the dependency has always been broken.
Instead, we enumerate the template files—after all, it's not like they
change a lot—and then we list them as dependencies for the test targets.
Fixes: #414
|
|
|
|
|
|
|
|
| |
Some functions are meant to exist for the entire duration of the
process, and thus have no need for a notification function because
one will never be called.
Fixes: #49
|
|
|
|
|
|
| |
If the (set-property) and (get-property) annotations on methods do not
round trip with the (setter) and (getter) annotations on the
corresponding property, we want to emit a warning.
|
|
|
|
|
|
|
| |
The heuristic is pretty trivial: for any given non-construct-only,
writable property, we check if there's a `set_<property>` method; for
any given readable property, we check if there's a `get_<property>`
method.
|
| |
|
|
|
|
| |
Add an accessors pair to Regress.TestObj and annotate them.
|
|
|
|
|
|
|
| |
This is so that GJS can use these variables in its own build files when
including gobject-introspection as a Meson subproject. Previously we
took the approach of using the files in their installed locations, but
that doesn't work as a subproject.
|
|
|
|
|
|
|
|
|
| |
The (out caller-allocates) and (out callee-allocates) annotations are
meant for structured or pointer types. Plain old data types are just
regular out parameters and don't need the annotation about who allocates
them.
See: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2005
|
|
|
|
|
|
|
| |
This member will contain the string from the GEnumValue/GFlagsValue
'value_name' introspection dump.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
|
|
|
|
| |
Don't rely on runtime name, but on C header parsed symbol.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
|
|
|
|
| |
Found by Coverity.
https://bugzilla.redhat.com/show_bug.cgi?id=1938731
|
|
|
|
|
|
|
|
|
|
| |
Because of skepticism I received in #224, I made this PR which keeps the
testsuite and CI improvements but doesn't add any new build options. I
hope this would be less controversial:
- no new knobs
- tests for those using existing build options
- CI tests `build_introspection_data = false`
|
|
|
|
|
| |
meson.source_root() return the root of the main project, but in this
case we want the root of the gobject-introspection (sub)project.
|
| |
|
|
|
|
|
| |
The g_memdup() function has been deprecated, so we should use the new
g_memdup2() function if available.
|
|
|
|
|
|
|
|
| |
It is worth to test marshalling of signal arguments, add
a basic (and barebones) object to add signals and emission
methods to, so bindings can test the signal handlers.
Related: https://gitlab.gnome.org/GNOME/gjs/-/issues/377
|
|
|
|
|
|
|
|
| |
Otherwise we'll end up using the locale encoding. While it's usually utf-8,
that's not the case on Windows.
There is one place where a file with filenames is passed, not sure there
so I left it and passed a explicit None.
|
|
|
|
|
|
|
|
|
| |
This reverts commit de6512b31b614567bf1800406303d1ccfb6d9455.
This was causing naming conflicts when the SECTION documentation
was picked over the class documentation.
See https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/360
|
|
|
|
|
|
|
|
| |
If g_value_get_enum() or g_value_get_flags() is about to fail with a
precondition check failure, we can improve diagnostics by issuing
a more informative critical warning.
Signed-off-by: Simon McVittie <smcv@debian.org>
|
|
|
|
|
|
|
|
| |
Bindings sometimes need to handle flags and enums separately, so
everything that is tested for enums should ideally be tested separately
for flags.
Signed-off-by: Simon McVittie <smcv@debian.org>
|
|
|
|
|
|
|
| |
We already had a test for enums, but flags are not precisely the same,
so testing both can give bindings better coverage.
Signed-off-by: Simon McVittie <smcv@debian.org>
|