diff --git a/apps/docs/__tests__/RescriptCompilerApi_.test.res b/apps/docs/__tests__/RescriptCompilerApi_.test.res new file mode 100644 index 000000000..3b2752407 --- /dev/null +++ b/apps/docs/__tests__/RescriptCompilerApi_.test.res @@ -0,0 +1,24 @@ +open Vitest +open RescriptCompilerApi + +test("recognizes the compiler API used by v13 alpha 6", async () => { + let version = Version.fromString("8") + + expect(version->Version.toString)->toBe("8.0") + expect(version->Version.availableLanguages)->toEqual([Lang.Res]) +}) + +test("enables existing compiler settings for v13 alpha 6", async () => { + let version = Version.fromString("8") + + expect(version->Version.isMinimumVersion(V4))->toBe(true) + expect(version->Version.isMinimumVersion(V6))->toBe(true) +}) + +test("keeps previous compiler APIs supported", async () => { + ["2", "3", "4", "5", "6", "7"]->Array.forEach(version => { + expect(version->Version.fromString->Version.toString)->toBe(`${version}.0`) + }) + expect(Version.fromString("1.0")->Version.availableLanguages)->toEqual([Lang.Reason, Res]) + expect(Version.fromString("unknown")->Version.isMinimumVersion(V4))->toBe(false) +}) diff --git a/apps/docs/e2e/Playground.cy.res b/apps/docs/e2e/Playground.cy.res index f4fd5eb09..8c2bfa799 100644 --- a/apps/docs/e2e/Playground.cy.res +++ b/apps/docs/e2e/Playground.cy.res @@ -54,6 +54,7 @@ let v13Versions = [ "v13.0.0-alpha.3", "v13.0.0-alpha.4", "v13.0.0-alpha.5", + "v13.0.0-alpha.6", ] describe("Playground", () => { diff --git a/packages/playground/src/CompilerManagerHook.res b/packages/playground/src/CompilerManagerHook.res index 65cf44aca..853492a27 100644 --- a/packages/playground/src/CompilerManagerHook.res +++ b/packages/playground/src/CompilerManagerHook.res @@ -84,7 +84,7 @@ let getLibrariesForVersion = (~version: Semver.t): array => { let getOpenModules = (~apiVersion: Version.t, ~libraries: array): option> => switch apiVersion { | V1 | V2 | V3 | UnknownVersion(_) => None - | V4 | V5 | V6 | V7 => + | V4 | V5 | V6 | V7 | V8 => libraries->Array.some(el => el === "@rescript/core") ? Some(["RescriptCore"]) : None } @@ -565,7 +565,7 @@ let useCompilerManager = ( ) | Lang.Res => instance->Compiler.resCompile(code) } - | V5 | V6 | V7 => + | V5 | V6 | V7 | V8 => switch lang { | Lang.Res => instance->Compiler.resCompile(code) | _ => CompilationResult.UnexpectedError(`Can't handle with lang: ${lang->Lang.toString}`) diff --git a/packages/shared/src/RescriptCompilerApi.res b/packages/shared/src/RescriptCompilerApi.res index 5b2304e10..ff67ea683 100644 --- a/packages/shared/src/RescriptCompilerApi.res +++ b/packages/shared/src/RescriptCompilerApi.res @@ -36,6 +36,7 @@ module Version = { | @as(5) V5 | @as(6) V6 | @as(7) V7 + | @as(8) V8 type t = | ...numbered @@ -64,6 +65,7 @@ module Version = { | list{"5"} => V5 | list{"6"} => V6 | list{"7"} => V7 + | list{"8"} => V8 | _ => UnknownVersion(apiVersion) } @@ -76,6 +78,7 @@ module Version = { | V5 => "5.0" | V6 => "6.0" | V7 => "7.0" + | V8 => "8.0" | UnknownVersion(version) => version } @@ -84,7 +87,7 @@ module Version = { let availableLanguages = t => switch t { | V1 => [Lang.Reason, Res] - | V2 | V3 | V4 | V5 | V6 | V7 => [Lang.Res] + | V2 | V3 | V4 | V5 | V6 | V7 | V8 => [Lang.Res] | UnknownVersion(_) => [Res] } diff --git a/packages/shared/src/RescriptCompilerApi.resi b/packages/shared/src/RescriptCompilerApi.resi index 827c4ecfa..1c5032715 100644 --- a/packages/shared/src/RescriptCompilerApi.resi +++ b/packages/shared/src/RescriptCompilerApi.resi @@ -27,6 +27,7 @@ module Version: { | @as(5) V5 | @as(6) V6 | @as(7) V7 + | @as(8) V8 type t = | ...numbered