Commit graph

135 commits

Author SHA1 Message Date
James Westman
5cf9b63547
language: Add cast expressions 2022-12-25 14:04:40 -06:00
James Westman
6c67e1fc5a
xml: Fix flags and enums
GtkBuilder XML uses enum nicknames, full names, or integer values, but
we accept GIR names, so passing those through doesn't work if the name
has an underscore (which traditionally turns into a dash in the
nickname). Avoid the problem by always writing the integer value of the
enum member.
2022-12-19 15:15:25 -06:00
James Westman
51d8969ced
Fix menus
- Menus require an ID
- The top level menu block can't have attributes
2022-12-19 15:15:25 -06:00
James Westman
8758bac40a
tests: Test XML outputs
Load the outputs of the tests in Gtk.Builder and make sure they work.
Some of them don't and need to be fixed. Others will require a bit more
work to set up callbacks, templates, etc.
2022-12-19 13:53:52 -06:00
James Westman
8fee46ec68
Format using black 2022-12-19 11:52:59 -06:00
James Westman
a24f16109f
Separate output into its own module 2022-10-15 19:40:47 -05:00
James Westman
447785ec8c language: Remove inline menus
Inline menus didn't work anyway--menus have to be referenced by ID
(though, curiously, you *can* put the <menu> within the <property> tag
and immediately reference it--but that's a hack, and not what
blueprint-compiler was doing).
2022-10-14 22:12:56 -05:00
James Westman
c0c40b1577
language: Support boxed types and GType
- Add support for type checking boxed types
- Remove support for converting string and number literals
- Add the `typeof()` operator for GType literals
2022-10-06 13:03:33 -05:00
James Westman
08da6f79c7
Fix referencing template by ID 2022-07-16 21:16:45 -05:00
James Westman
664fa2250b
Validate that an object can have children
Fixes #32.
2022-07-09 16:40:02 -05:00
James Westman
0a0389b1f8
grammar: Create an AST node for type names 2022-07-09 16:05:10 -05:00
Sonny Piers
2da6be7618 lsp: Fix crash when import version missing
The issue is specific to the language server, since it's trying to use
an AST that contains errors. The test would not fail but was added
anyway.
2022-07-09 20:00:10 +00:00
James Westman
b9fdc5a5f1
Fix action widgets in templates
Fixes #69.
2022-07-09 14:48:33 -05:00
James Westman
06f54c8ff8
Use typelib instead of XML
For normal compilation, use .typelib files rather than .gir XML files.
This is much faster.

Rather than using libgirepository, which would try to actually load the
libraries, we use a custom parser.

The language server will still read XML because it needs to access
documentation, which is not in the typelib, but that's generally fine
because it's a long lived process and only has to do that once.
2022-06-25 00:15:20 -05:00
James Westman
4fefa0bd73
Add lookup expressions 2022-06-24 23:16:15 -05:00
James Westman
c094743e84
Fix compiling empty file 2022-06-17 11:12:21 -05:00
James Westman
4b7fda4f43
action widgets: Fix grammar 2022-06-08 23:55:22 -05:00
James Westman
824476bda1
Add errors for duplicate properties and blocks 2022-06-08 23:08:15 -05:00
James Westman
6f4d458855
build: Install to datadir
Install the python module to the data directory, not the python install
directory that meson gives us. Then, in the main script, try to find the
module and add it to the path by assuming the script is installed to
(prefix)/bin. Hopefully this will fix the ModuleNotFound errors.
2022-06-07 11:52:55 -05:00
James Westman
d09ee2a62b
tokenizer: Fix operator tokenization 2022-04-30 16:41:46 -05:00
James Westman
99e428d93c validation: Disallow instantiating abstract classes 2022-04-28 23:35:34 -05:00
James Westman
f78478bea1 validation: Writable/construct-only properties
Add two new errors, one for non-writable properties and another for
binding construct-only properties.
2022-04-28 22:52:30 -05:00
James Westman
9144ac67f0
tests: Add fuzz test 2022-04-18 20:22:31 -05:00
James Westman
4e2501c7d7
Fix number parsing 2022-04-18 20:22:29 -05:00
James Westman
417f163a5a
Fix crash in flags value for unchecked classes 2022-04-18 15:42:55 -05:00
James Westman
3d4aae79c4 tests: Test unchecked classes 2022-04-08 14:56:10 -05:00
James Westman
4cf966eafa tests: Add GTK directive error tests 2022-03-28 14:38:05 -05:00
James Westman
1c1a5e3266 tests: Fix child_type test
The test passed, but the XML produced an error when loaded by GtkBuilder.
2022-03-28 14:38:05 -05:00
James Westman
a4ffdd944f language: a11y: Fix property names
Blueprint uses underscores in property/state/relation names, but
GtkBuilder expects dashes because it uses the glib names from the
GtkAccessible* enums.
2022-03-28 14:38:05 -05:00
James Westman
d73c83aa63 decompiler: Allow and ignore <placeholder/>
Some existing files contain <placeholder/> tags, which should be
permitted but ignored.
2022-03-28 14:34:27 -05:00
James Westman
3f37380c25
tests: Test that docs & completions don't crash 2022-03-19 18:16:25 -05:00
James Westman
8ea06e8a78
Add validation for flag values 2022-03-02 14:06:57 -06:00
James Westman
bebe784d1d
Fix type check for flags when only one is present
When only one flag is specified, it's parsed as an IdentValue rather
than a FlagsValue, so IdentValue needs to be able to type check flags
(aka bitfields) properly.

Fixes #47
2022-03-02 13:57:30 -06:00
James Westman
4b42016837 Fix bug with inline menus
Fixes #44
2022-02-21 14:12:56 -06:00
Gleb Smirnov
4103ad3e71
fix: allow adding action widgets to GtkInfoBar 2022-02-19 12:51:34 +03:00
Gleb Smirnov
d9ef1d4df9
tests: add tests for action widget syntax 2022-02-18 19:04:08 +03:00
James Westman
9873a2072b Add warning for sync-create 2022-02-09 15:39:02 -06:00
James Westman
32d4769f65 Change sync-create to no-sync-create
Fixes #31
2022-02-09 15:39:02 -06:00
James Westman
3bdcc83c4e tokenizer: Remove redundant token types 2022-02-09 15:24:56 -06:00
James Westman
ee5f32622f reorganization: Finish moving parsing and AST 2022-01-26 22:37:51 -06:00
Gleb Smirnov
f8c96abfc5 tests: add test for inverted binding flag 2022-01-24 20:35:31 +00:00
Gleb Smirnov
cc8a555f97
tests: add tests for internal children 2022-01-22 09:43:14 +03:00
Gleb Smirnov
492b73bc47 tests: add tests for signal's object attribute 2022-01-17 05:37:17 +00:00
James Westman
6b78338d1a
Make template parent optional
Not recommended, since you lose some type checking.
2022-01-16 21:08:16 -06:00
James Westman
1897478480
tests: Exclude lines from coverage
Exclude things like "raise NotImplementedError" and compiler bug
handlers.
2022-01-16 20:59:11 -06:00
James Westman
85150d397b
gir: Fix assignable_to for interface implementations
Part of #29
2022-01-11 22:37:24 -06:00
James Westman
8e1a9f72dd
parser: Merge consecutive "Unexpected tokens" errors
Fixes #24
2021-12-16 23:18:31 -06:00
James Westman
34e78de338
decompiler: Support GtkFileFilter tags 2021-12-15 11:32:33 -06:00
James Westman
5ac1c85082
remove accidentally committed file 2021-12-04 22:31:10 -06:00
James Westman
1f677725d8
interactive_port: Ignore "_build" and "build" dirs
Fixes #15
2021-12-04 19:14:04 -06:00