Skip to content

Commit 65b2361

Browse files
committed
Extract sorbet_syntax_check!
Using Sorbet's more-specific RBI mode.
1 parent e72c97a commit 65b2361

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

lib/tapioca/helpers/sorbet_helper.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,25 @@ def sorbet(*sorbet_args)
2222
SPOOM_CONTEXT.srb(sorbet_args.join(" "), sorbet_bin: sorbet_path)
2323
end
2424

25+
#: (String, rbi_mode: bool) { (String stderr) -> void } -> void
26+
def sorbet_syntax_check!(source, rbi_mode:, &on_failure)
27+
quoted_source = "\"#{source}\""
28+
29+
result = if rbi_mode
30+
# --e-rbi cannot be used on its own, so we pass a dummy value like `-e ""`
31+
sorbet("--no-config", "--stop-after=parser", "-e", '""', "--e-rbi", quoted_source)
32+
else
33+
sorbet("--no-config", "--stop-after=parser", "-e", quoted_source)
34+
end
35+
36+
unless result.status
37+
stderr = result.err #: as !nil
38+
on_failure.call(stderr)
39+
end
40+
41+
nil
42+
end
43+
2544
#: -> String
2645
def sorbet_path
2746
sorbet_path = ENV.fetch(SORBET_EXE_PATH_ENV_VAR, SORBET_BIN)

lib/tapioca/helpers/test/dsl_compiler.rb

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,14 @@ def rbi_for(constant_name, compiler_options: {})
9494
compiler.decorate
9595

9696
rbi = Tapioca::DEFAULT_RBI_FORMATTER.print_file(file)
97-
result = sorbet(
98-
"--no-config",
99-
"--stop-after=parser",
100-
"-e",
101-
"\"#{rbi}\"",
102-
)
10397

104-
unless result.status
98+
sorbet_syntax_check!(rbi, rbi_mode: true) do |stderr|
10599
raise(SyntaxError, <<~MSG)
106100
Expected generated RBI file for `#{constant_name}` to not have any parsing errors.
107101
108102
Got these parsing errors:
109103
110-
#{result.err}
104+
#{stderr}
111105
MSG
112106
end
113107

0 commit comments

Comments
 (0)