All files / src/compiler/phases/2-analyze/visitors SvelteSelf.js

100% Statements 40/40
80% Branches 8/10
100% Functions 1/1
100% Lines 36/36

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 372x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 33x 33x 73x 73x 73x 41x 33x 33x 33x 1x 1x 32x 32x 2x 2x 2x 2x 2x 2x 2x 2x 32x 32x 32x  
/** @import { AST } from '#compiler' */
/** @import { Context } from '../types' */
import { visit_component } from './shared/component.js';
import * as e from '../../../errors.js';
import * as w from '../../../warnings.js';
import { filename } from '../../../state.js';
 
/**
 * @param {AST.SvelteSelf} node
 * @param {Context} context
 */
export function SvelteSelf(node, context) {
	const valid = context.path.some(
		(node) =>
			node.type === 'IfBlock' ||
			node.type === 'EachBlock' ||
			node.type === 'Component' ||
			node.type === 'SnippetBlock'
	);
 
	if (!valid) {
		e.svelte_self_invalid_placement(node);
	}
 
	if (context.state.analysis.runes) {
		const name = filename === '(unknown)' ? 'Self' : context.state.analysis.name;
		const basename =
			filename === '(unknown)'
				? 'Self.svelte'
				: /** @type {string} */ (filename.split(/[/\\]/).pop());
 
		w.svelte_self_deprecated(node, name, basename);
	}
 
	visit_component(node, context);
}