From e3b4cbeba70fdbe85a26d2ce834573943042436c Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 8 Dec 2022 14:01:24 -0800 Subject: [PATCH 1/2] HotFix: Scalar migration script and scalar in namespace (#1401) --- ...fix-scalar-migration_2022-12-08-20-18.json | 11 +++++ ...fix-scalar-migration_2022-12-08-20-18.json | 15 +++++++ packages/compiler/core/parser.ts | 3 ++ packages/compiler/test/parser.test.ts | 17 ++++++++ packages/migrate/src/cli.ts | 2 + packages/migrate/src/migrate.ts | 2 + .../src/migrations/v0.38/model-to-scalars.ts | 16 ++++++- .../migrate/test/model-to-scalars.test.ts | 42 ++++++++++++++++++- 8 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json create mode 100644 common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json diff --git a/common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json b/common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json new file mode 100644 index 00000000000..e786a831f93 --- /dev/null +++ b/common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@cadl-lang/compiler", + "comment": "Fix: `scalar` can be used inside of namespace block", + "type": "patch" + } + + ], + "packageName": "@cadl-lang/compiler" +} diff --git a/common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json b/common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json new file mode 100644 index 00000000000..4bb9e207049 --- /dev/null +++ b/common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json @@ -0,0 +1,15 @@ +{ + "changes": [ + { + "packageName": "@cadl-lang/migrate", + "comment": "Fix missing file env header", + "type": "patch" + }, + { + "packageName": "@cadl-lang/migrate", + "comment": "Fix issue with end of file getting dropped.", + "type": "patch" + } + ], + "packageName": "@cadl-lang/migrate" +} diff --git a/packages/compiler/core/parser.ts b/packages/compiler/core/parser.ts index 4bbca6c5321..c98cabcfce2 100644 --- a/packages/compiler/core/parser.ts +++ b/packages/compiler/core/parser.ts @@ -449,6 +449,9 @@ function createParser(code: string | SourceFile, options: ParseOptions = {}): Pa case Token.ModelKeyword: item = parseModelStatement(pos, decorators); break; + case Token.ScalarKeyword: + item = parseScalarStatement(pos, decorators); + break; case Token.NamespaceKeyword: const ns = parseNamespaceStatement(pos, decorators); diff --git a/packages/compiler/test/parser.test.ts b/packages/compiler/test/parser.test.ts index 198a993f5d0..5b95383ce2e 100644 --- a/packages/compiler/test/parser.test.ts +++ b/packages/compiler/test/parser.test.ts @@ -144,6 +144,23 @@ describe("compiler: parser", () => { ["model bar = a | b;", [/'{' expected/]], ]); }); + + describe("scalar statements", () => { + parseEach([ + "scalar uuid extends string;", + `@foo() + scalar uuid extends string;`, + `namespace Foo { + scalar uuid extends string;} + `, + ]); + + parseErrorEach([ + ["scalar uuid extends string { }", [/Statement expected./]], + ["scalar uuid is string;", [/Statement expected./]], + ]); + }); + describe("interface statements", () => { parseEach([ "interface Foo { }", diff --git a/packages/migrate/src/cli.ts b/packages/migrate/src/cli.ts index 176f4123cbf..309d9169ea9 100644 --- a/packages/migrate/src/cli.ts +++ b/packages/migrate/src/cli.ts @@ -1,3 +1,5 @@ +#!/usr/bin/env node + /* eslint-disable no-console */ import { migrateCadlFiles } from "./migrate.js"; import { migrateModelToScalar } from "./migrations/v0.38/model-to-scalars.js"; diff --git a/packages/migrate/src/migrate.ts b/packages/migrate/src/migrate.ts index a025b92cbf7..f419b99730e 100644 --- a/packages/migrate/src/migrate.ts +++ b/packages/migrate/src/migrate.ts @@ -87,6 +87,8 @@ function migrateCadlContentInternal( segments.push(action.content); last = action.target.end; } + segments.push(content.slice(last, -1)); + const newContent = segments.join(""); try { diff --git a/packages/migrate/src/migrations/v0.38/model-to-scalars.ts b/packages/migrate/src/migrations/v0.38/model-to-scalars.ts index 98018490992..8c8c727aa25 100644 --- a/packages/migrate/src/migrations/v0.38/model-to-scalars.ts +++ b/packages/migrate/src/migrations/v0.38/model-to-scalars.ts @@ -1,4 +1,8 @@ -import type { CadlScriptNode, TemplateParameterDeclarationNode } from "@cadl-lang/compiler-v0.37"; +import type { + CadlScriptNode, + Node, + TemplateParameterDeclarationNode, +} from "@cadl-lang/compiler-v0.37"; import { CadlCompilerV0_37, createMigration, @@ -24,7 +28,7 @@ export const migrateModelToScalar = createMigration({ } const actions: MigrateAction[] = []; - compilerV37.visitChildren(root, (node) => { + visitRecursive(compilerV37, root, (node) => { if ( node.kind === compilerV37.SyntaxKind.ModelStatement && node.is && @@ -47,6 +51,14 @@ export const migrateModelToScalar = createMigration({ }, }); +function visitRecursive(compiler: any, root: Node, callback: (node: Node) => void) { + const visit = (node: Node) => { + callback(node); + compiler.visitChildren(node, visit); + }; + visit(root); +} + const builtInTypes = new Set([ "bytes", "numeric", diff --git a/packages/migrate/test/model-to-scalars.test.ts b/packages/migrate/test/model-to-scalars.test.ts index 0d64d43e39b..8dbe8d1f2a0 100644 --- a/packages/migrate/test/model-to-scalars.test.ts +++ b/packages/migrate/test/model-to-scalars.test.ts @@ -3,7 +3,7 @@ import { migrateCadlContent } from "../src/migrate.js"; import { migrateModelToScalar } from "../src/migrations/v0.38/model-to-scalars.js"; describe("migration: model to scalars", () => { - it("convert", async () => { + it("various models", async () => { const [result] = await migrateCadlContent( ` model foo is string; @@ -35,4 +35,44 @@ scalar Resource extends int32; `.trim() ); }); + + it("inside namespace", async () => { + const [result] = await migrateCadlContent( + ` +namespace MyService { + model foo is string; +} + `, + migrateModelToScalar + ); + + strictEqual( + result.trim(), + ` +namespace MyService { + scalar foo extends string; +} + `.trim() + ); + }); + + it("with operations", async () => { + const [result] = await migrateCadlContent( + ` +model foo is string; + +op test(): string; + `, + migrateModelToScalar + ); + + strictEqual( + result.trim(), + ` +scalar foo extends string; + +op test(): string; + `.trim() + ); + }); }); From abc386678c4512245eac8a4e47660de804d0c451 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 8 Dec 2022 14:34:17 -0800 Subject: [PATCH 2/2] Bump versions (#1403) --- ...fix-scalar-migration_2022-12-08-20-18.json | 11 --------- ...fix-scalar-migration_2022-12-08-20-18.json | 15 ------------ packages/bundler/package.json | 2 +- packages/cadl-vscode/package.json | 2 +- packages/compiler/CHANGELOG.json | 12 ++++++++++ packages/compiler/CHANGELOG.md | 9 +++++++- packages/compiler/package.json | 2 +- packages/html-program-viewer/package.json | 4 ++-- packages/library-linter/package.json | 4 ++-- packages/lint/package.json | 4 ++-- packages/migrate/CHANGELOG.json | 23 +++++++++++++++++++ packages/migrate/CHANGELOG.md | 10 +++++++- packages/migrate/package.json | 6 ++--- packages/openapi/package.json | 4 ++-- packages/openapi3/package.json | 4 ++-- packages/playground/package.json | 2 +- packages/prettier-plugin-cadl/package.json | 2 +- packages/rest/package.json | 4 ++-- packages/samples/package.json | 2 +- packages/versioning/package.json | 2 +- 20 files changed, 74 insertions(+), 50 deletions(-) delete mode 100644 common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json delete mode 100644 common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json diff --git a/common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json b/common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json deleted file mode 100644 index e786a831f93..00000000000 --- a/common/changes/@cadl-lang/compiler/fix-scalar-migration_2022-12-08-20-18.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "Fix: `scalar` can be used inside of namespace block", - "type": "patch" - } - - ], - "packageName": "@cadl-lang/compiler" -} diff --git a/common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json b/common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json deleted file mode 100644 index 4bb9e207049..00000000000 --- a/common/changes/@cadl-lang/migrate/fix-scalar-migration_2022-12-08-20-18.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/migrate", - "comment": "Fix missing file env header", - "type": "patch" - }, - { - "packageName": "@cadl-lang/migrate", - "comment": "Fix issue with end of file getting dropped.", - "type": "patch" - } - ], - "packageName": "@cadl-lang/migrate" -} diff --git a/packages/bundler/package.json b/packages/bundler/package.json index d6903cc1209..c1ae37640f3 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -38,7 +38,7 @@ "!dist/test/**" ], "dependencies": { - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@rollup/plugin-virtual": "~3.0.1", "@rollup/plugin-commonjs": "~23.0.2", "@rollup/plugin-json": "~5.0.1", diff --git a/packages/cadl-vscode/package.json b/packages/cadl-vscode/package.json index 3dd885a2f3e..c07399c00b6 100644 --- a/packages/cadl-vscode/package.json +++ b/packages/cadl-vscode/package.json @@ -121,7 +121,7 @@ "@types/mocha": "~10.0.0", "@types/node": "~18.11.9", "@types/vscode": "~1.53.0", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/eslint-config-cadl": "~0.5.0", "@cadl-lang/internal-build-utils": "~0.3.2", "eslint": "^8.12.0", diff --git a/packages/compiler/CHANGELOG.json b/packages/compiler/CHANGELOG.json index 26cad94370a..61fc4343d2e 100644 --- a/packages/compiler/CHANGELOG.json +++ b/packages/compiler/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@cadl-lang/compiler", "entries": [ + { + "version": "0.38.1", + "tag": "@cadl-lang/compiler_v0.38.1", + "date": "Thu, 08 Dec 2022 22:04:15 GMT", + "comments": { + "patch": [ + { + "comment": "Fix: `scalar` can be used inside of namespace block" + } + ] + } + }, { "version": "0.38.0", "tag": "@cadl-lang/compiler_v0.38.0", diff --git a/packages/compiler/CHANGELOG.md b/packages/compiler/CHANGELOG.md index 2529eb816e7..5a18e8d109a 100644 --- a/packages/compiler/CHANGELOG.md +++ b/packages/compiler/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @cadl-lang/compiler -This log was last generated on Wed, 07 Dec 2022 17:21:52 GMT and should not be manually modified. +This log was last generated on Thu, 08 Dec 2022 22:04:15 GMT and should not be manually modified. + +## 0.38.1 +Thu, 08 Dec 2022 22:04:15 GMT + +### Patches + +- Fix: `scalar` can be used inside of namespace block ## 0.38.0 Wed, 07 Dec 2022 17:21:52 GMT diff --git a/packages/compiler/package.json b/packages/compiler/package.json index c8541c8508b..a9a81f0a5e5 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@cadl-lang/compiler", - "version": "0.38.0", + "version": "0.38.1", "description": "Cadl Compiler Preview", "author": "Microsoft Corporation", "license": "MIT", diff --git a/packages/html-program-viewer/package.json b/packages/html-program-viewer/package.json index b8391e65dc2..b54cced8938 100644 --- a/packages/html-program-viewer/package.json +++ b/packages/html-program-viewer/package.json @@ -51,7 +51,7 @@ "!dist/test/**" ], "peerDependencies": { - "@cadl-lang/compiler": "~0.38.0" + "@cadl-lang/compiler": "~0.38.1" }, "dependencies": { "prettier": "~2.7.1", @@ -66,7 +66,7 @@ "@types/prettier": "2.6.0", "@types/react": "~18.0.5", "@types/react-dom": "~18.0.1", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/eslint-config-cadl": "~0.5.0", "@babel/core": "^7.0.0", "eslint": "^8.12.0", diff --git a/packages/library-linter/package.json b/packages/library-linter/package.json index ab39f346839..25a57adffa8 100644 --- a/packages/library-linter/package.json +++ b/packages/library-linter/package.json @@ -51,12 +51,12 @@ "!dist/test/**" ], "peerDependencies": { - "@cadl-lang/compiler": "~0.38.0" + "@cadl-lang/compiler": "~0.38.1" }, "devDependencies": { "@types/mocha": "~10.0.0", "@types/node": "~18.11.9", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/eslint-config-cadl": "~0.5.0", "eslint": "^8.12.0", "mocha": "~10.1.0", diff --git a/packages/lint/package.json b/packages/lint/package.json index ef13f5bf4b2..8f1c234b7d8 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -50,12 +50,12 @@ "!dist/test/**" ], "peerDependencies": { - "@cadl-lang/compiler": "~0.38.0" + "@cadl-lang/compiler": "~0.38.1" }, "devDependencies": { "@types/mocha": "~10.0.0", "@types/node": "~18.11.9", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/eslint-config-cadl": "~0.5.0", "@cadl-lang/eslint-plugin": "~0.38.0", "eslint": "^8.12.0", diff --git a/packages/migrate/CHANGELOG.json b/packages/migrate/CHANGELOG.json index c6abdc0f26a..beea6213dac 100644 --- a/packages/migrate/CHANGELOG.json +++ b/packages/migrate/CHANGELOG.json @@ -1,6 +1,29 @@ { "name": "@cadl-lang/migrate", "entries": [ + { + "version": "0.38.1", + "tag": "@cadl-lang/migrate_v0.38.1", + "date": "Thu, 08 Dec 2022 22:04:15 GMT", + "comments": { + "patch": [ + { + "comment": "Fix missing file env header" + }, + { + "comment": "Fix issue with end of file getting dropped." + } + ], + "dependency": [ + { + "comment": "Updating dependency \"@cadl-lang/compiler\" from `~0.38.0` to `~0.38.1`" + }, + { + "comment": "Updating dependency \"@cadl-lang/compiler\" from `~0.38.0` to `~0.38.1`" + } + ] + } + }, { "version": "0.38.0", "tag": "@cadl-lang/migrate_v0.38.0", diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md index a86ddba9ea7..533fb4d21df 100644 --- a/packages/migrate/CHANGELOG.md +++ b/packages/migrate/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log - @cadl-lang/migrate -This log was last generated on Wed, 07 Dec 2022 17:21:52 GMT and should not be manually modified. +This log was last generated on Thu, 08 Dec 2022 22:04:15 GMT and should not be manually modified. + +## 0.38.1 +Thu, 08 Dec 2022 22:04:15 GMT + +### Patches + +- Fix missing file env header +- Fix issue with end of file getting dropped. ## 0.38.0 Wed, 07 Dec 2022 17:21:52 GMT diff --git a/packages/migrate/package.json b/packages/migrate/package.json index f57f7350030..b1e7e846e45 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "@cadl-lang/migrate", - "version": "0.38.0", + "version": "0.38.1", "author": "Microsoft Corporation", "description": "Migration tool for cadl.", "homepage": "https://github.com/Microsoft/cadl", @@ -39,13 +39,13 @@ ], "dependencies": { "globby": "~13.1.1", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/compiler-v0.37": "npm:@cadl-lang/compiler@0.37.0" }, "devDependencies": { "@types/mocha": "~10.0.0", "@types/node": "~18.11.9", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/eslint-config-cadl": "~0.5.0", "@cadl-lang/eslint-plugin": "~0.38.0", "eslint": "^8.12.0", diff --git a/packages/openapi/package.json b/packages/openapi/package.json index 419ce6afd99..e792584351a 100644 --- a/packages/openapi/package.json +++ b/packages/openapi/package.json @@ -52,13 +52,13 @@ "!dist/test/**" ], "peerDependencies": { - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/rest": "~0.38.0" }, "devDependencies": { "@types/mocha": "~10.0.0", "@types/node": "~18.11.9", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/rest": "~0.38.0", "@cadl-lang/eslint-config-cadl": "~0.5.0", "@cadl-lang/library-linter": "~0.38.0", diff --git a/packages/openapi3/package.json b/packages/openapi3/package.json index fa563398cc7..d7360009b57 100644 --- a/packages/openapi3/package.json +++ b/packages/openapi3/package.json @@ -53,14 +53,14 @@ ], "peerDependencies": { "@cadl-lang/versioning": "~0.38.0", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/rest": "~0.38.0", "@cadl-lang/openapi": "~0.38.0" }, "devDependencies": { "@types/mocha": "~10.0.0", "@types/node": "~18.11.9", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/rest": "~0.38.0", "@cadl-lang/openapi": "~0.38.0", "@cadl-lang/versioning": "~0.38.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 6edd2295036..98f162f01dc 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -42,7 +42,7 @@ ], "dependencies": { "@cadl-lang/versioning": "~0.38.0", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/rest": "~0.38.0", "@cadl-lang/openapi3": "~0.38.0", "@cadl-lang/openapi": "~0.38.0", diff --git a/packages/prettier-plugin-cadl/package.json b/packages/prettier-plugin-cadl/package.json index f9ef6b69213..12296784eaf 100644 --- a/packages/prettier-plugin-cadl/package.json +++ b/packages/prettier-plugin-cadl/package.json @@ -15,7 +15,7 @@ "prettier": "~2.7.1" }, "devDependencies": { - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/internal-build-utils": "~0.3.2", "@rollup/plugin-commonjs": "~23.0.2", "@rollup/plugin-json": "~5.0.1", diff --git a/packages/rest/package.json b/packages/rest/package.json index c813d993b79..4d7e4038aee 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -56,12 +56,12 @@ "!dist/test/**" ], "peerDependencies": { - "@cadl-lang/compiler": "~0.38.0" + "@cadl-lang/compiler": "~0.38.1" }, "devDependencies": { "@types/mocha": "~10.0.0", "@types/node": "~18.11.9", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/eslint-config-cadl": "~0.5.0", "@cadl-lang/library-linter": "~0.38.0", "@cadl-lang/eslint-plugin": "~0.38.0", diff --git a/packages/samples/package.json b/packages/samples/package.json index c9a48e15cd9..59db615b4cf 100644 --- a/packages/samples/package.json +++ b/packages/samples/package.json @@ -33,7 +33,7 @@ ], "dependencies": { "@cadl-lang/versioning": "~0.38.0", - "@cadl-lang/compiler": "~0.38.0", + "@cadl-lang/compiler": "~0.38.1", "@cadl-lang/rest": "~0.38.0", "@cadl-lang/openapi": "~0.38.0", "@cadl-lang/openapi3": "~0.38.0", diff --git a/packages/versioning/package.json b/packages/versioning/package.json index 5de98d43036..d0479b16d8c 100644 --- a/packages/versioning/package.json +++ b/packages/versioning/package.json @@ -52,7 +52,7 @@ "!dist/test/**" ], "dependencies": { - "@cadl-lang/compiler": "~0.38.0" + "@cadl-lang/compiler": "~0.38.1" }, "devDependencies": { "@types/mocha": "~10.0.0",