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/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/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/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/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/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() + ); + }); }); 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",