chore: remove some todos (#16515)

* chore: remove some todos

* fix

* fix

* doh

* convert `TemplateComment` back to `Comment`

* `Evaluation.has_unknown`
pull/16513/head
ComputerGuy 1 month ago committed by GitHub
parent 51771447c6
commit 03f2e44757
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,5 @@
---
'svelte': patch
---
chore: remove some todos

@ -1707,14 +1707,14 @@ function extract_type_and_comment(declarator, state, path) {
} }
// Ensure modifiers are applied in the same order as Svelte 4 // Ensure modifiers are applied in the same order as Svelte 4
const modifier_order = [ const modifier_order = /** @type {const} */ ([
'preventDefault', 'preventDefault',
'stopPropagation', 'stopPropagation',
'stopImmediatePropagation', 'stopImmediatePropagation',
'self', 'self',
'trusted', 'trusted',
'once' 'once'
]; ]);
/** /**
* @param {AST.RegularElement | AST.SvelteElement | AST.SvelteWindow | AST.SvelteDocument | AST.SvelteBody} element * @param {AST.RegularElement | AST.SvelteElement | AST.SvelteWindow | AST.SvelteDocument | AST.SvelteBody} element

@ -1,5 +1,4 @@
/** @import { AST } from '#compiler' */ /** @import { AST } from '#compiler' */
/** @import { Comment } from 'estree' */
// @ts-expect-error acorn type definitions are borked in the release we use // @ts-expect-error acorn type definitions are borked in the release we use
import { isIdentifierStart, isIdentifierChar } from 'acorn'; import { isIdentifierStart, isIdentifierChar } from 'acorn';
import fragment from './state/fragment.js'; import fragment from './state/fragment.js';

@ -82,7 +82,9 @@ export function CallExpression(node, context) {
['debug', 'dir', 'error', 'group', 'groupCollapsed', 'info', 'log', 'trace', 'warn'].includes( ['debug', 'dir', 'error', 'group', 'groupCollapsed', 'info', 'log', 'trace', 'warn'].includes(
node.callee.property.name node.callee.property.name
) && ) &&
node.arguments.some((arg) => arg.type !== 'Literal') // TODO more cases? node.arguments.some(
(arg) => arg.type === 'SpreadElement' || context.state.scope.evaluate(arg).has_unknown
)
) { ) {
return b.call( return b.call(
node.callee, node.callee,

@ -3,14 +3,14 @@
import * as b from '#compiler/builders'; import * as b from '#compiler/builders';
import { build_event, build_event_handler } from './shared/events.js'; import { build_event, build_event_handler } from './shared/events.js';
const modifiers = [ const modifiers = /** @type {const} */ ([
'stopPropagation', 'stopPropagation',
'stopImmediatePropagation', 'stopImmediatePropagation',
'preventDefault', 'preventDefault',
'self', 'self',
'trusted', 'trusted',
'once' 'once'
]; ]);
/** /**
* @param {AST.OnDirective} node * @param {AST.OnDirective} node

@ -180,6 +180,13 @@ class Evaluation {
*/ */
is_known = true; is_known = true;
/**
* True if the possible values contains `UNKNOWN`
* @readonly
* @type {boolean}
*/
has_unknown = false;
/** /**
* True if the value is known to not be null/undefined * True if the value is known to not be null/undefined
* @readonly * @readonly
@ -540,6 +547,10 @@ class Evaluation {
if (value == null || value === UNKNOWN) { if (value == null || value === UNKNOWN) {
this.is_defined = false; this.is_defined = false;
} }
if (value === UNKNOWN) {
this.has_unknown = true;
}
} }
if (this.values.size > 1 || typeof this.value === 'symbol') { if (this.values.size > 1 || typeof this.value === 'symbol') {

@ -247,7 +247,17 @@ export namespace AST {
name: string; name: string;
/** The 'y' in `on:x={y}` */ /** The 'y' in `on:x={y}` */
expression: null | Expression; expression: null | Expression;
modifiers: string[]; // TODO specify modifiers: Array<
| 'capture'
| 'nonpassive'
| 'once'
| 'passive'
| 'preventDefault'
| 'self'
| 'stopImmediatePropagation'
| 'stopPropagation'
| 'trusted'
>;
/** @internal */ /** @internal */
metadata: { metadata: {
expression: ExpressionMetadata; expression: ExpressionMetadata;

@ -1296,7 +1296,17 @@ declare module 'svelte/compiler' {
name: string; name: string;
/** The 'y' in `on:x={y}` */ /** The 'y' in `on:x={y}` */
expression: null | Expression; expression: null | Expression;
modifiers: string[]; modifiers: Array<
| 'capture'
| 'nonpassive'
| 'once'
| 'passive'
| 'preventDefault'
| 'self'
| 'stopImmediatePropagation'
| 'stopPropagation'
| 'trusted'
>;
} }
/** A `style:` directive */ /** A `style:` directive */

Loading…
Cancel
Save