rbs 3.9.4 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.clang-format +75 -0
- data/.clangd +2 -0
- data/.dockerignore +37 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +66 -0
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +79 -0
- data/.github/workflows/release-gems.yml +164 -0
- data/.github/workflows/ruby.yml +84 -30
- data/.github/workflows/rust.yml +186 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +55 -0
- data/.github/workflows/windows.yml +9 -3
- data/.gitignore +16 -0
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +430 -0
- data/Dockerfile.jruby +53 -0
- data/README.md +41 -4
- data/Rakefile +777 -60
- data/Steepfile +11 -0
- data/config.yml +660 -62
- data/core/array.rbs +541 -398
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +9 -8
- data/core/class.rbs +11 -8
- data/core/comparable.rbs +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +297 -196
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +91 -28
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +260 -1151
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -116
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1151 -829
- data/core/integer.rbs +156 -195
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +220 -154
- data/core/kernel.rbs +239 -163
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +16 -14
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +302 -150
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +77 -63
- data/core/object.rbs +9 -11
- data/core/object_space/weak_key_map.rbs +7 -7
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1312 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +364 -518
- data/core/random.rbs +21 -3
- data/core/range.rbs +181 -79
- data/core/rational.rbs +60 -89
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +63 -56
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +78 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +6 -70
- data/core/rubygems/requirement.rbs +5 -15
- data/core/rubygems/rubygems.rbs +18 -81
- data/core/rubygems/specification.rbs +8 -0
- data/core/rubygems/version.rbs +2 -163
- data/core/set.rbs +493 -363
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +43 -42
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +139 -83
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/CONTRIBUTING.md +2 -1
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +20 -20
- data/docs/release.md +151 -0
- data/docs/rust.md +96 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +48 -18
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +1855 -0
- data/ext/rbs_extension/ast_translation.h +41 -0
- data/ext/rbs_extension/class_constants.c +187 -0
- data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +23 -1
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +26 -1
- data/ext/rbs_extension/legacy_location.c +299 -0
- data/ext/rbs_extension/legacy_location.h +82 -0
- data/ext/rbs_extension/main.c +603 -23
- data/ext/rbs_extension/rbs_extension.h +6 -21
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/include/rbs/ast.h +1047 -0
- data/include/rbs/defines.h +99 -0
- data/include/rbs/lexer.h +207 -0
- data/include/rbs/location.h +40 -0
- data/include/rbs/parser.h +153 -0
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +47 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +6 -70
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +24 -0
- data/include/rbs.h +9 -2
- data/lib/rbs/annotate/formatter.rb +3 -13
- data/lib/rbs/annotate/rdoc_annotator.rb +30 -32
- data/lib/rbs/annotate/rdoc_source.rb +1 -1
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +451 -0
- data/lib/rbs/ast/ruby/comment_block.rb +247 -0
- data/lib/rbs/ast/ruby/declarations.rb +291 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +762 -0
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +142 -20
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +63 -126
- data/lib/rbs/cli.rb +59 -29
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -0
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +121 -65
- data/lib/rbs/definition_builder/method_builder.rb +74 -33
- data/lib/rbs/definition_builder.rb +177 -20
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment.rb +410 -215
- data/lib/rbs/environment_loader.rb +2 -8
- data/lib/rbs/errors.rb +31 -21
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +568 -0
- data/lib/rbs/location_aux.rb +36 -4
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +47 -18
- data/lib/rbs/parser_aux.rb +37 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +196 -45
- data/lib/rbs/prototype/runtime.rb +12 -2
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +120 -44
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +7 -4
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -21
- data/lib/rbs/types.rb +91 -79
- data/lib/rbs/unit_test/convertibles.rb +1 -0
- data/lib/rbs/unit_test/type_assertions.rb +44 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/runtime.rb +196 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +25 -2
- data/lib/rbs_jars.rb +39 -0
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +8 -3
- data/rbs.gemspec +37 -5
- data/schema/typeParam.json +17 -1
- data/sig/ancestor_builder.rbs +1 -1
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +13 -10
- data/sig/ast/ruby/annotations.rbs +470 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +198 -0
- data/sig/buffer.rbs +81 -5
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/collection/config/lockfile_generator.rbs +2 -0
- data/sig/definition.rbs +6 -0
- data/sig/definition_builder.rbs +3 -1
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +94 -87
- data/sig/errors.rbs +26 -20
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +126 -0
- data/sig/location.rbs +32 -7
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +9 -4
- data/sig/namespace.rbs +20 -5
- data/sig/parser.rbs +77 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/prototype/rbi.rbs +33 -4
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +48 -0
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -5
- data/sig/types.rbs +10 -8
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +15 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +1628 -0
- data/src/lexer.c +3221 -0
- data/src/lexer.re +155 -0
- data/src/lexstate.c +221 -0
- data/src/location.c +31 -0
- data/src/parser.c +4258 -0
- data/src/serialize.c +958 -0
- data/src/string.c +41 -0
- data/src/util/rbs_allocator.c +171 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +18 -92
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +167 -0
- data/stdlib/abbrev/0/array.rbs +1 -1
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +7 -4
- data/stdlib/csv/0/csv.rbs +5 -5
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +11 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +117 -1
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +73 -54
- data/stdlib/fileutils/0/fileutils.rbs +179 -160
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/ipaddr/0/ipaddr.rbs +0 -5
- data/stdlib/json/0/json.rbs +232 -185
- data/stdlib/monitor/0/monitor.rbs +5 -5
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +521 -397
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +65 -12
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +4 -3
- data/stdlib/rdoc/0/comment.rbs +2 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +7 -5
- data/stdlib/rdoc/0/store.rbs +2 -2
- data/stdlib/resolv/0/resolv.rbs +26 -69
- data/stdlib/ripper/0/ripper.rbs +25 -19
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +3 -3
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +9 -9
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1209 -95
- data/stdlib/strscan/0/string_scanner.rbs +101 -80
- data/stdlib/tempfile/0/manifest.yaml +3 -0
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +58 -7
- data/stdlib/tsort/0/cyclic.rbs +4 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +16 -15
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +21 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +8 -8
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- data/wasm/README.md +60 -0
- data/wasm/rbs_wasm.c +423 -0
- metadata +131 -19
- data/ext/rbs_extension/lexer.c +0 -2728
- data/ext/rbs_extension/lexer.h +0 -179
- data/ext/rbs_extension/lexer.re +0 -147
- data/ext/rbs_extension/lexstate.c +0 -175
- data/ext/rbs_extension/location.c +0 -325
- data/ext/rbs_extension/location.h +0 -85
- data/ext/rbs_extension/parser.c +0 -2982
- data/ext/rbs_extension/parser.h +0 -18
- data/ext/rbs_extension/parserstate.c +0 -411
- data/ext/rbs_extension/parserstate.h +0 -163
- data/ext/rbs_extension/unescape.c +0 -32
- data/include/rbs/ruby_objs.h +0 -72
- data/src/constants.c +0 -153
- data/src/ruby_objs.c +0 -799
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a0ae1797f25f4639914ed5244dd903aa9bf0cb28d8f7ad46917ea78a5a390c8b
|
|
4
|
+
data.tar.gz: 78456ce40939bc2911cf4b70a8053449f34a457fadc35eda478d6e7bec7cc527
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b27b18e6a70bf268ecb3db9de38954a733352d643504d1842f9c2dbc9aa4c3af7abf5b9816838a795082061ed3519384e764c31acbce208338cae636481b495a
|
|
7
|
+
data.tar.gz: fc7f3b804b4f93e18f71032ff34b19962100c5ca835628cf9d8e44467c96c683c699fb6fe8e0ec895a70c448bf1b21e9f840efd523e295378da9a6a5a42e340f
|
data/.clang-format
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
Language: Cpp
|
|
3
|
+
|
|
4
|
+
# Indentation
|
|
5
|
+
UseTab: Never
|
|
6
|
+
IndentWidth: 4
|
|
7
|
+
BreakBeforeBraces: Attach
|
|
8
|
+
IndentCaseLabels: false
|
|
9
|
+
NamespaceIndentation: None
|
|
10
|
+
ContinuationIndentWidth: 4
|
|
11
|
+
IndentPPDirectives: None
|
|
12
|
+
IndentWrappedFunctionNames: false
|
|
13
|
+
AccessModifierOffset: -2
|
|
14
|
+
|
|
15
|
+
# Alignment
|
|
16
|
+
AlignAfterOpenBracket: BlockIndent
|
|
17
|
+
AlignConsecutiveAssignments: false
|
|
18
|
+
AlignConsecutiveDeclarations: false
|
|
19
|
+
AlignConsecutiveMacros: false
|
|
20
|
+
AlignEscapedNewlines: Left
|
|
21
|
+
AlignOperands: false
|
|
22
|
+
AlignTrailingComments: true
|
|
23
|
+
DerivePointerAlignment: false
|
|
24
|
+
PointerAlignment: Right
|
|
25
|
+
|
|
26
|
+
# Function calls formatting
|
|
27
|
+
BinPackArguments: false
|
|
28
|
+
BinPackParameters: false
|
|
29
|
+
AllowAllArgumentsOnNextLine: false
|
|
30
|
+
ExperimentalAutoDetectBinPacking: false
|
|
31
|
+
PenaltyBreakBeforeFirstCallParameter: 1
|
|
32
|
+
AlwaysBreakAfterDefinitionReturnType: None
|
|
33
|
+
|
|
34
|
+
# Wrapping and Breaking
|
|
35
|
+
ColumnLimit: 0
|
|
36
|
+
AllowShortBlocksOnASingleLine: Never
|
|
37
|
+
AllowShortCaseLabelsOnASingleLine: false
|
|
38
|
+
AllowShortFunctionsOnASingleLine: All
|
|
39
|
+
AllowShortIfStatementsOnASingleLine: Always
|
|
40
|
+
AllowShortLoopsOnASingleLine: false
|
|
41
|
+
AlwaysBreakAfterReturnType: None
|
|
42
|
+
AlwaysBreakBeforeMultilineStrings: false
|
|
43
|
+
AlwaysBreakTemplateDeclarations: No
|
|
44
|
+
BreakBeforeBinaryOperators: None
|
|
45
|
+
BreakBeforeTernaryOperators: false
|
|
46
|
+
BreakConstructorInitializers: BeforeColon
|
|
47
|
+
BreakInheritanceList: BeforeColon
|
|
48
|
+
BreakStringLiterals: false
|
|
49
|
+
CompactNamespaces: false
|
|
50
|
+
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
|
51
|
+
Cpp11BracedListStyle: false
|
|
52
|
+
ReflowComments: false
|
|
53
|
+
SortIncludes: Never
|
|
54
|
+
InsertNewlineAtEOF: true
|
|
55
|
+
|
|
56
|
+
# Spaces
|
|
57
|
+
SpaceAfterCStyleCast: true
|
|
58
|
+
SpaceAfterLogicalNot: false
|
|
59
|
+
SpaceAfterTemplateKeyword: true
|
|
60
|
+
SpaceBeforeAssignmentOperators: true
|
|
61
|
+
SpaceBeforeCpp11BracedList: true
|
|
62
|
+
SpaceBeforeCtorInitializerColon: true
|
|
63
|
+
SpaceBeforeInheritanceColon: true
|
|
64
|
+
SpaceBeforeParens: ControlStatements
|
|
65
|
+
SpaceBeforeRangeBasedForLoopColon: true
|
|
66
|
+
SpaceBeforeSquareBrackets: false
|
|
67
|
+
SpaceInEmptyBlock: false
|
|
68
|
+
SpaceInEmptyParentheses: false
|
|
69
|
+
SpacesBeforeTrailingComments: 1
|
|
70
|
+
SpacesInAngles: false
|
|
71
|
+
SpacesInCStyleCastParentheses: false
|
|
72
|
+
SpacesInConditionalStatement: false
|
|
73
|
+
SpacesInContainerLiterals: true
|
|
74
|
+
SpacesInParentheses: false
|
|
75
|
+
SpacesInSquareBrackets: false
|
data/.clangd
ADDED
data/.dockerignore
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Keep the build context small. .git is intentionally NOT ignored: rbs.gemspec
|
|
2
|
+
# builds its file list with `git ls-files`.
|
|
3
|
+
#
|
|
4
|
+
# Safe to ignore here: untracked/generated paths, and tracked paths the gemspec
|
|
5
|
+
# already rejects (so `gem build` does not expect them on disk). Do NOT ignore a
|
|
6
|
+
# tracked path the gemspec ships — `gem build` would fail with "... are not
|
|
7
|
+
# files". .vscode/ and benchmark/ are tracked but rejected by the gemspec.
|
|
8
|
+
.vscode/
|
|
9
|
+
benchmark/
|
|
10
|
+
|
|
11
|
+
# Editor / tooling / worktree copies (untracked; each is a full repo clone)
|
|
12
|
+
.claude/
|
|
13
|
+
trees/
|
|
14
|
+
.devcontainer/
|
|
15
|
+
.idea/
|
|
16
|
+
.ruby-lsp/
|
|
17
|
+
.yardoc/
|
|
18
|
+
doc/
|
|
19
|
+
datasets/
|
|
20
|
+
tmp/
|
|
21
|
+
|
|
22
|
+
# Build artifact — rebuilt inside the image by `rake wasm:jruby_setup`
|
|
23
|
+
lib/rbs/wasm/*.wasm
|
|
24
|
+
*.gem
|
|
25
|
+
ext/**/*.o
|
|
26
|
+
ext/**/*.so
|
|
27
|
+
ext/**/*.bundle
|
|
28
|
+
*.log
|
|
29
|
+
|
|
30
|
+
# Local scratch / experiment files
|
|
31
|
+
flamegraph.html
|
|
32
|
+
gc.html
|
|
33
|
+
foo.rbs
|
|
34
|
+
sorted.json
|
|
35
|
+
string.json
|
|
36
|
+
Gemfile-*
|
|
37
|
+
gemfiles/
|
data/.github/dependabot.yml
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
version: 2
|
|
2
2
|
updates:
|
|
3
|
-
- package-ecosystem: bundler
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
# - package-ecosystem: bundler
|
|
4
|
+
# directory: "/"
|
|
5
|
+
# schedule:
|
|
6
|
+
# interval: daily
|
|
7
|
+
# open-pull-requests-limit: 3
|
|
8
|
+
# allow:
|
|
9
|
+
# - dependency-type: all
|
|
10
10
|
|
|
11
|
-
- package-ecosystem: bundler
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
# - package-ecosystem: bundler
|
|
12
|
+
# directory: "/steep"
|
|
13
|
+
# schedule:
|
|
14
|
+
# interval: daily
|
|
15
|
+
# open-pull-requests-limit: 3
|
|
16
|
+
# allow:
|
|
17
|
+
# - dependency-type: all
|
|
18
18
|
|
|
19
19
|
- package-ecosystem: 'github-actions'
|
|
20
20
|
directory: '/'
|
|
21
21
|
schedule:
|
|
22
22
|
interval: 'weekly'
|
|
23
|
+
labels:
|
|
24
|
+
- 'skip-changelog'
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: Scheduled Bundle Update PR
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '0 0 * * 2'
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
bundle-update:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout repository
|
|
14
|
+
uses: actions/checkout@v7
|
|
15
|
+
|
|
16
|
+
- name: Set up Ruby
|
|
17
|
+
uses: ruby/setup-ruby@v1
|
|
18
|
+
with:
|
|
19
|
+
ruby-version: '4.0'
|
|
20
|
+
|
|
21
|
+
- name: Set up git
|
|
22
|
+
run: |
|
|
23
|
+
git config --global user.name "github-actions[bot]"
|
|
24
|
+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
25
|
+
|
|
26
|
+
- name: Switch branch
|
|
27
|
+
run: |
|
|
28
|
+
git switch -c bundle-update-$(date +'%Y%m%d')-$(uuidgen | cut -c1-8)
|
|
29
|
+
|
|
30
|
+
- name: Install bundler
|
|
31
|
+
run: gem install bundler
|
|
32
|
+
|
|
33
|
+
- name: Run bundle update
|
|
34
|
+
run: |
|
|
35
|
+
bundle lock --update
|
|
36
|
+
bundle lock --update --gemfile=steep/Gemfile
|
|
37
|
+
git add Gemfile.lock steep/Gemfile.lock
|
|
38
|
+
|
|
39
|
+
if git diff --cached --exit-code; then
|
|
40
|
+
echo "No changes to commit, exiting."
|
|
41
|
+
exit 0
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
git commit -m "bundle update"
|
|
45
|
+
echo "has_update=true" >> $GITHUB_ENV
|
|
46
|
+
|
|
47
|
+
- name: Push branch
|
|
48
|
+
if: env.has_update == 'true'
|
|
49
|
+
run: git push origin HEAD
|
|
50
|
+
|
|
51
|
+
- name: Create Pull Request
|
|
52
|
+
if: env.has_update == 'true'
|
|
53
|
+
env:
|
|
54
|
+
GH_TOKEN: ${{ secrets.DEPENDABOT_MERGE_GH_TOKEN }}
|
|
55
|
+
run: |
|
|
56
|
+
gh pr create \
|
|
57
|
+
--title "bundle update ($(date +'%Y-%m-%d'))" \
|
|
58
|
+
--body "Automated weekly bundle update" \
|
|
59
|
+
--head "$(git rev-parse --abbrev-ref HEAD)" \
|
|
60
|
+
--base "${{ github.event.repository.default_branch }}" \
|
|
61
|
+
--label "skip-changelog"
|
|
62
|
+
|
|
63
|
+
gh pr merge --auto --merge "$(git rev-parse --abbrev-ref HEAD)"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: C Code Generation and Formatting Check
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
pull_request: {}
|
|
8
|
+
merge_group: {}
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
format-check:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v7
|
|
18
|
+
- uses: ruby/setup-ruby@v1
|
|
19
|
+
with:
|
|
20
|
+
ruby-version: "4.0"
|
|
21
|
+
bundler-cache: none
|
|
22
|
+
- name: Set working directory as safe
|
|
23
|
+
run: git config --global --add safe.directory $(pwd)
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
sudo apt-get update
|
|
27
|
+
sudo apt-get install -y libdb-dev curl autoconf automake m4 libtool
|
|
28
|
+
- name: Install clang-format from LLVM
|
|
29
|
+
run: |
|
|
30
|
+
# The codename must match the `runs-on` image: `ubuntu-latest` is 24.04 (noble).
|
|
31
|
+
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key \
|
|
32
|
+
| sudo gpg --dearmor -o /usr/share/keyrings/llvm-archive-keyring.gpg
|
|
33
|
+
# Written directly rather than through `apt-add-repository`, which cannot
|
|
34
|
+
# parse `[signed-by=...]` inside a one-line `deb` shortcut.
|
|
35
|
+
echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" \
|
|
36
|
+
| sudo tee /etc/apt/sources.list.d/llvm.list
|
|
37
|
+
sudo apt-get update
|
|
38
|
+
sudo apt-get install -y clang-format-20
|
|
39
|
+
sudo ln -sf /usr/bin/clang-format-20 /usr/local/bin/clang-format
|
|
40
|
+
clang-format --version
|
|
41
|
+
- name: Count processors
|
|
42
|
+
run: nproc
|
|
43
|
+
- name: Install Re2c
|
|
44
|
+
run: |
|
|
45
|
+
cd /tmp
|
|
46
|
+
curl -L https://github.com/skvadrik/re2c/archive/refs/tags/4.5.1.tar.gz > re2c-4.5.1.tar.gz
|
|
47
|
+
tar xf re2c-4.5.1.tar.gz
|
|
48
|
+
cd re2c-4.5.1
|
|
49
|
+
cmake --preset=linux-gcc-release-ootree-skeleton-fast
|
|
50
|
+
cmake --build --preset=linux-gcc-release-ootree-skeleton-fast --parallel="$(nproc)"
|
|
51
|
+
sudo ln -sf "$(pwd)"/.build/linux-gcc-release-ootree-skeleton-fast/re2c /usr/local/bin/re2c
|
|
52
|
+
re2c --version
|
|
53
|
+
- name: Update rubygems & bundler
|
|
54
|
+
run: |
|
|
55
|
+
ruby -v
|
|
56
|
+
gem update --system
|
|
57
|
+
- name: install erb
|
|
58
|
+
run: gem install erb
|
|
59
|
+
- name: bin/setup
|
|
60
|
+
run: |
|
|
61
|
+
bin/setup
|
|
62
|
+
- name: Check C code generation and formatting
|
|
63
|
+
run: |
|
|
64
|
+
clang-format --version
|
|
65
|
+
bundle exec rake lexer templates compile confirm_lexer confirm_templates
|
|
66
|
+
bundle exec rake format:c_check
|
|
@@ -11,12 +11,12 @@ jobs:
|
|
|
11
11
|
comments:
|
|
12
12
|
runs-on: "ubuntu-latest"
|
|
13
13
|
# env:
|
|
14
|
-
# RUBY_COMMIT:
|
|
14
|
+
# RUBY_COMMIT: v4.0.0-preview2
|
|
15
15
|
steps:
|
|
16
|
-
- uses: actions/checkout@
|
|
16
|
+
- uses: actions/checkout@v7
|
|
17
17
|
- uses: ruby/setup-ruby@v1
|
|
18
18
|
with:
|
|
19
|
-
ruby-version: "
|
|
19
|
+
ruby-version: "4.0.6"
|
|
20
20
|
bundler: none
|
|
21
21
|
- name: Install dependencies
|
|
22
22
|
run: |
|
|
@@ -26,6 +26,8 @@ jobs:
|
|
|
26
26
|
run: |
|
|
27
27
|
ruby -v
|
|
28
28
|
gem update --system
|
|
29
|
+
- name: install erb
|
|
30
|
+
run: gem install erb
|
|
29
31
|
- name: bin/setup
|
|
30
32
|
run: |
|
|
31
33
|
bin/setup
|
|
@@ -14,10 +14,10 @@ jobs:
|
|
|
14
14
|
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
|
|
15
15
|
steps:
|
|
16
16
|
- name: Dependabot metadata
|
|
17
|
-
uses: dependabot/fetch-metadata@
|
|
17
|
+
uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0
|
|
18
18
|
id: metadata
|
|
19
19
|
- name: Checkout repository
|
|
20
|
-
uses: actions/checkout@
|
|
20
|
+
uses: actions/checkout@v7
|
|
21
21
|
with:
|
|
22
22
|
fetch-depth: 0
|
|
23
23
|
- name: Abort if blocker files are changed
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: JRuby
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
pull_request:
|
|
8
|
+
paths:
|
|
9
|
+
- ".github/workflows/jruby.yml"
|
|
10
|
+
- "include/**"
|
|
11
|
+
- "src/**"
|
|
12
|
+
- "wasm/**"
|
|
13
|
+
- "lib/**"
|
|
14
|
+
- "sig/**"
|
|
15
|
+
- "core/**"
|
|
16
|
+
- "stdlib/**"
|
|
17
|
+
- "test/**"
|
|
18
|
+
- "Rakefile"
|
|
19
|
+
- "rbs.gemspec"
|
|
20
|
+
# `merge_group` has no `paths` filter, so this runs on every queue entry.
|
|
21
|
+
merge_group: {}
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
|
|
26
|
+
env:
|
|
27
|
+
# Keep in sync with .github/workflows/wasm.yml.
|
|
28
|
+
WASI_SDK_VERSION: "33"
|
|
29
|
+
WASI_SDK_RELEASE: "33.0"
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
test:
|
|
33
|
+
name: jruby
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v7
|
|
37
|
+
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
|
38
|
+
|
|
39
|
+
# Build the .wasm and fetch the Chicory jars with CRuby + the WASI SDK,
|
|
40
|
+
# then run RBS itself on JRuby against those artifacts.
|
|
41
|
+
- name: Set up Ruby (to assemble the WebAssembly runtime)
|
|
42
|
+
uses: ruby/setup-ruby@v1
|
|
43
|
+
with:
|
|
44
|
+
ruby-version: ruby
|
|
45
|
+
bundler: none
|
|
46
|
+
- name: Update rubygems & bundler
|
|
47
|
+
run: gem update --system
|
|
48
|
+
- name: Install gems
|
|
49
|
+
run: |
|
|
50
|
+
bundle config set --local without libs:profilers
|
|
51
|
+
bundle install --jobs 4 --retry 3
|
|
52
|
+
- name: Install the WASI SDK
|
|
53
|
+
run: |
|
|
54
|
+
url="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_RELEASE}-x86_64-linux.tar.gz"
|
|
55
|
+
mkdir -p "$HOME/wasi-sdk"
|
|
56
|
+
curl -sSL "$url" | tar xz --strip-components=1 -C "$HOME/wasi-sdk"
|
|
57
|
+
echo "WASI_SDK_PATH=$HOME/wasi-sdk" >> "$GITHUB_ENV"
|
|
58
|
+
- name: Build rbs_parser.wasm
|
|
59
|
+
run: bundle exec rake wasm:jruby_setup
|
|
60
|
+
|
|
61
|
+
- name: Set up JRuby
|
|
62
|
+
uses: ruby/setup-ruby@v1
|
|
63
|
+
with:
|
|
64
|
+
ruby-version: jruby
|
|
65
|
+
bundler: none
|
|
66
|
+
- name: Install runtime and test gems
|
|
67
|
+
# rdoc 8.0.0 added a runtime dependency on rbs, which pulls the released
|
|
68
|
+
# C-extension rbs gem and fails to build on JRuby. Pin rdoc below 8 until
|
|
69
|
+
# a -java rbs gem is published.
|
|
70
|
+
run: |
|
|
71
|
+
gem install prism rake rake-compiler test-unit rspec minitest json-schema pry --no-document
|
|
72
|
+
gem install rdoc -v "< 8" --no-document
|
|
73
|
+
# jar-dependencies resolves through the JVM, so download the Chicory/ASM
|
|
74
|
+
# jars into ~/.m2 here on JRuby (jar-dependencies is not available in the
|
|
75
|
+
# CRuby step above).
|
|
76
|
+
- name: Download the Chicory and ASM jars
|
|
77
|
+
run: jruby -S rake wasm:install_jars
|
|
78
|
+
- name: Run the test suite on JRuby
|
|
79
|
+
run: jruby -S rake test
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
name: Release gems
|
|
2
|
+
|
|
3
|
+
# Builds, publishes, and announces a release. Dispatch it against the `vX.Y.Z` tag
|
|
4
|
+
# of the release: the tag is created first so that everything published afterwards
|
|
5
|
+
# traces back to an immutable ref, and so the reversible step comes before the
|
|
6
|
+
# irreversible one.
|
|
7
|
+
#
|
|
8
|
+
# Dispatching against a branch builds and verifies the gems and stops there, which
|
|
9
|
+
# is how the build is exercised without releasing anything.
|
|
10
|
+
#
|
|
11
|
+
# | Gem | Platform | Parser |
|
|
12
|
+
# | -------------------- | ------------- | -------------------------------- |
|
|
13
|
+
# | `rbs-X.Y.Z.gem` | `ruby` (MRI) | C extension, compiled on install |
|
|
14
|
+
# | `rbs-X.Y.Z-java.gem` | `java` (JRuby)| `rbs_parser.wasm`, prebuilt here |
|
|
15
|
+
#
|
|
16
|
+
# See docs/release.md. The `java` gem is built on CRuby: the platform comes from
|
|
17
|
+
# `RBS_PLATFORM`, not from the engine running `gem build`. JRuby is only needed to
|
|
18
|
+
# run the result, which the workflow does before it would publish anything.
|
|
19
|
+
#
|
|
20
|
+
# One job on purpose. Tagging, pushing the gems, and opening the GitHub release
|
|
21
|
+
# all belong to a single release, and keeping them in one place keeps their order
|
|
22
|
+
# readable -- the tag is created before anything is published, so the reversible
|
|
23
|
+
# step comes before the irreversible one.
|
|
24
|
+
|
|
25
|
+
on:
|
|
26
|
+
workflow_dispatch:
|
|
27
|
+
|
|
28
|
+
permissions:
|
|
29
|
+
contents: read
|
|
30
|
+
|
|
31
|
+
env:
|
|
32
|
+
# Keep in sync with .github/workflows/wasm.yml and .github/workflows/jruby.yml.
|
|
33
|
+
WASI_SDK_VERSION: "33"
|
|
34
|
+
WASI_SDK_RELEASE: "33.0"
|
|
35
|
+
|
|
36
|
+
jobs:
|
|
37
|
+
release:
|
|
38
|
+
name: release
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
permissions:
|
|
41
|
+
contents: write # publish the GitHub release
|
|
42
|
+
id-token: write # trusted publishing to RubyGems
|
|
43
|
+
steps:
|
|
44
|
+
# The gemspec takes its file list from `git ls-files`, so both gems are built
|
|
45
|
+
# from the committed state.
|
|
46
|
+
- uses: actions/checkout@v7
|
|
47
|
+
- name: Set up Ruby
|
|
48
|
+
uses: ruby/setup-ruby@v1
|
|
49
|
+
with:
|
|
50
|
+
ruby-version: ruby
|
|
51
|
+
bundler: none
|
|
52
|
+
- name: Update rubygems & bundler
|
|
53
|
+
run: gem update --system
|
|
54
|
+
- name: Install gems
|
|
55
|
+
run: |
|
|
56
|
+
bundle config set --local without libs:profilers
|
|
57
|
+
bundle install --jobs 4 --retry 3
|
|
58
|
+
|
|
59
|
+
- name: Read the version
|
|
60
|
+
id: version
|
|
61
|
+
run: echo "version=$(ruby -e 'load "lib/rbs/version.rb"; print RBS::VERSION')" >> "$GITHUB_OUTPUT"
|
|
62
|
+
|
|
63
|
+
# Fail before spending a minute on the build, and before anything is pushed:
|
|
64
|
+
# the tag is what the release is named after, so it has to be the version the
|
|
65
|
+
# tagged commit actually declares.
|
|
66
|
+
- name: Check the tag against RBS::VERSION
|
|
67
|
+
if: github.ref_type == 'tag'
|
|
68
|
+
run: |
|
|
69
|
+
if [ "${{ github.ref_name }}" != "v${{ steps.version.outputs.version }}" ]; then
|
|
70
|
+
echo "::error::tag ${{ github.ref_name }} does not match RBS::VERSION ${{ steps.version.outputs.version }}"
|
|
71
|
+
exit 1
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
- name: Build the ruby gem
|
|
75
|
+
run: |
|
|
76
|
+
mkdir -p pkg
|
|
77
|
+
gem build rbs.gemspec -o "pkg/rbs-${{ steps.version.outputs.version }}.gem"
|
|
78
|
+
|
|
79
|
+
# `rake wasm:jruby_setup` compiles src/**/*.c to WebAssembly and copies the
|
|
80
|
+
# result to lib/rbs/wasm/, where the gemspec picks it up. clang runs as a
|
|
81
|
+
# subprocess, so this works on CRuby.
|
|
82
|
+
- name: Install the WASI SDK
|
|
83
|
+
run: |
|
|
84
|
+
url="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_RELEASE}-x86_64-linux.tar.gz"
|
|
85
|
+
mkdir -p "$HOME/wasi-sdk"
|
|
86
|
+
curl -sSL "$url" | tar xz --strip-components=1 -C "$HOME/wasi-sdk"
|
|
87
|
+
echo "WASI_SDK_PATH=$HOME/wasi-sdk" >> "$GITHUB_ENV"
|
|
88
|
+
- name: Build rbs_parser.wasm
|
|
89
|
+
run: bundle exec rake wasm:jruby_setup
|
|
90
|
+
|
|
91
|
+
- name: Build the java gem
|
|
92
|
+
env:
|
|
93
|
+
RBS_PLATFORM: java
|
|
94
|
+
run: gem build rbs.gemspec -o "pkg/rbs-${{ steps.version.outputs.version }}-java.gem"
|
|
95
|
+
|
|
96
|
+
# `git ls-files` vouches for everything else, but rbs_parser.wasm is a build
|
|
97
|
+
# artifact, so the java gem is the one that can come out quietly wrong.
|
|
98
|
+
- name: Check the built gems
|
|
99
|
+
run: |
|
|
100
|
+
ruby -rrubygems/package -e '
|
|
101
|
+
ruby_gem, java_gem = ARGV.map { Gem::Package.new(_1).spec }
|
|
102
|
+
|
|
103
|
+
raise "unexpected platform: #{ruby_gem.platform}" unless ruby_gem.platform.to_s == "ruby"
|
|
104
|
+
raise "the C extension is not declared" if ruby_gem.extensions.empty?
|
|
105
|
+
|
|
106
|
+
raise "unexpected platform: #{java_gem.platform}" unless java_gem.platform.to_s == "java"
|
|
107
|
+
raise "rbs_parser.wasm is missing" unless java_gem.files.include?("lib/rbs/wasm/rbs_parser.wasm")
|
|
108
|
+
raise "the java gem must not declare an extension" unless java_gem.extensions.empty?
|
|
109
|
+
|
|
110
|
+
[ruby_gem, java_gem].each { puts "#{_1.full_name}: #{_1.files.size} files" }
|
|
111
|
+
' "pkg/rbs-${{ steps.version.outputs.version }}.gem" \
|
|
112
|
+
"pkg/rbs-${{ steps.version.outputs.version }}-java.gem"
|
|
113
|
+
|
|
114
|
+
# The checks above cannot tell whether rbs_parser.wasm actually runs. Install
|
|
115
|
+
# the gem the way a user would -- jar-dependencies fetches Chicory and ASM
|
|
116
|
+
# from Maven during the install -- and parse something with it, so the
|
|
117
|
+
# WebAssembly runtime is exercised end to end before anything is published.
|
|
118
|
+
- name: Set up JRuby
|
|
119
|
+
uses: ruby/setup-ruby@v1
|
|
120
|
+
with:
|
|
121
|
+
ruby-version: jruby
|
|
122
|
+
bundler: none
|
|
123
|
+
- name: Check the java gem on JRuby
|
|
124
|
+
run: |
|
|
125
|
+
gem install "pkg/rbs-${{ steps.version.outputs.version }}-java.gem"
|
|
126
|
+
ruby -e '
|
|
127
|
+
require "rbs"
|
|
128
|
+
_, _, decls = RBS::Parser.parse_signature("class Foo end")
|
|
129
|
+
names = decls.map { _1.name.to_s }
|
|
130
|
+
raise "parsed #{names.inspect}, expected [\"Foo\"]" unless names == ["Foo"]
|
|
131
|
+
puts "#{RUBY_ENGINE} #{RUBY_VERSION}: rbs #{RBS::VERSION} parses through the WebAssembly runtime"
|
|
132
|
+
'
|
|
133
|
+
|
|
134
|
+
- name: Switch back to CRuby
|
|
135
|
+
uses: ruby/setup-ruby@v1
|
|
136
|
+
with:
|
|
137
|
+
ruby-version: ruby
|
|
138
|
+
bundler: none
|
|
139
|
+
|
|
140
|
+
# Uploaded before publishing, so a failed push still leaves the gems behind.
|
|
141
|
+
- uses: actions/upload-artifact@v7
|
|
142
|
+
with:
|
|
143
|
+
name: gems
|
|
144
|
+
path: pkg/*.gem
|
|
145
|
+
if-no-files-found: error
|
|
146
|
+
|
|
147
|
+
# Everything below runs only for a release tag.
|
|
148
|
+
- name: Configure RubyGems credentials
|
|
149
|
+
if: github.ref_type == 'tag'
|
|
150
|
+
# No floating major tag on this action, so the exact release is pinned.
|
|
151
|
+
uses: rubygems/configure-rubygems-credentials@v2.1.0
|
|
152
|
+
|
|
153
|
+
- name: Push the gems
|
|
154
|
+
if: github.ref_type == 'tag'
|
|
155
|
+
run: |
|
|
156
|
+
gem push "pkg/rbs-${{ steps.version.outputs.version }}.gem"
|
|
157
|
+
gem push "pkg/rbs-${{ steps.version.outputs.version }}-java.gem"
|
|
158
|
+
|
|
159
|
+
# Last, so that a failed push never announces a release that has no gems.
|
|
160
|
+
- name: Publish the GitHub release
|
|
161
|
+
if: github.ref_type == 'tag'
|
|
162
|
+
env:
|
|
163
|
+
GH_TOKEN: ${{ github.token }}
|
|
164
|
+
run: bundle exec rake gem:gh_release
|