Skip to content

Commit 5999ac9

Browse files
committed
Allow Object.freeze calls
1 parent f0da8d9 commit 5999ac9

3 files changed

Lines changed: 34 additions & 13 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/**
2+
* Program comments
3+
*/
4+
const Foo = Test.extend({
5+
frozen: Object.freeze(['name'])
6+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import classic from 'ember-classic-decorator';
2+
3+
/**
4+
* Program comments
5+
*/
6+
@classic
7+
class Foo extends Test {
8+
frozen = Object.freeze(['name']);
9+
}

transforms/helpers/ast.ts

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/* eslint-disable @typescript-eslint/no-empty-interface, jsdoc/require-jsdoc */
22

33
import type { Type } from 'ast-types/lib/types';
4-
import type { ExpressionKind } from 'ast-types/gen/kinds';
54
import type {
65
ASTNode,
76
ArrayExpression,
@@ -314,7 +313,25 @@ export function isEOIdentifierAction(u: unknown): u is EOIdentifierAction {
314313
}
315314

316315
export interface EOPropertySimple extends EOProperty {
317-
value: ExpressionKind; // UNSAFE: We don't check this anywhere
316+
value:
317+
| ArrayExpression
318+
| Identifier
319+
| Literal
320+
| MemberExpression
321+
| ObjectExpression
322+
| CallExpression;
323+
}
324+
325+
export function isEOPropertySimple(u: unknown): u is EOPropertySimple {
326+
return (
327+
isEOProperty(u) &&
328+
(isNode(u.value, 'ArrayExpression') ||
329+
isNode(u.value, 'Identifier') ||
330+
isNode(u.value, 'Literal') ||
331+
isNode(u.value, 'MemberExpression') ||
332+
isNode(u.value, 'ObjectExpression') ||
333+
isNode(u.value, 'CallExpression'))
334+
);
318335
}
319336

320337
interface EOActionInfiniteCall extends CallExpression {
@@ -378,17 +395,6 @@ function isEOActionInfiniteLiteral(
378395
return isNode(u, 'Literal') && (!name || u.value === name);
379396
}
380397

381-
export function isEOPropertySimple(u: unknown): u is EOPropertySimple {
382-
return (
383-
isEOProperty(u) &&
384-
(isNode(u.value, 'ArrayExpression') ||
385-
isNode(u.value, 'Identifier') ||
386-
isNode(u.value, 'Literal') ||
387-
isNode(u.value, 'MemberExpression') ||
388-
isNode(u.value, 'ObjectExpression'))
389-
);
390-
}
391-
392398
export interface EOSuperExpression extends CallExpression {
393399
callee: EOSuperExpressionCallee;
394400
}

0 commit comments

Comments
 (0)