remove PROXY_REMOVE_PATH

pull/16126/head
Rich Harris 3 months ago
parent 3d161ee89d
commit 75c448cb72

@ -9,7 +9,6 @@ import { get_rune } from '../../../scope.js';
import { get_prop_source, is_prop_source, is_state_source, should_proxy } from '../utils.js'; import { get_prop_source, is_prop_source, is_state_source, should_proxy } from '../utils.js';
import { is_hoisted_function } from '../../utils.js'; import { is_hoisted_function } from '../../utils.js';
import { get_value } from './shared/declarations.js'; import { get_value } from './shared/declarations.js';
import { PROXY_REMOVE_PATH } from '#client/constants';
/** /**
* @param {VariableDeclaration} node * @param {VariableDeclaration} node
@ -90,12 +89,7 @@ export function VariableDeclaration(node, context) {
binding.kind === 'bindable_prop' && binding.kind === 'bindable_prop' &&
should_proxy(initial, context.state.scope) should_proxy(initial, context.state.scope)
) { ) {
initial = b.call( initial = b.call('$.proxy', initial, dev ? b.literal(id.name) : undefined);
'$.proxy',
initial,
dev ? b.literal(id.name) : undefined,
dev ? b.literal(PROXY_REMOVE_PATH) : undefined
);
} }
if (is_prop_source(binding, context.state)) { if (is_prop_source(binding, context.state)) {
@ -136,20 +130,19 @@ export function VariableDeclaration(node, context) {
); );
const is_state = is_state_source(binding, context.state.analysis); const is_state = is_state_source(binding, context.state.analysis);
const is_proxy = should_proxy(value, context.state.scope); const is_proxy = should_proxy(value, context.state.scope);
if (rune === '$state' && is_proxy) { if (rune === '$state' && is_proxy) {
value = b.call( value = b.call('$.proxy', value, dev ? b.literal(id.name) : undefined);
'$.proxy',
value,
dev ? b.literal(id.name) : undefined,
dev ? b.literal(PROXY_REMOVE_PATH) : undefined
);
} }
if (is_state) { if (is_state) {
value = b.call('$.state', value); value = b.call('$.state', value);
if (dev) {
value = b.call('$.tag', value, b.literal(id.name));
}
} }
if (dev && is_state) {
value = b.call('$.tag', value, b.literal(id.name));
}
return value; return value;
}; };

@ -27,8 +27,6 @@ export const EFFECT_IS_UPDATING = 1 << 21;
export const PROXY_PRESERVE_PATH = 1 << 1; export const PROXY_PRESERVE_PATH = 1 << 1;
/** Change proxy path to new "owner" */ /** Change proxy path to new "owner" */
export const PROXY_CHANGE_PATH = 1 << 2; export const PROXY_CHANGE_PATH = 1 << 2;
/** "Unown" proxy, so its path becomes `[$state proxy]` */
export const PROXY_REMOVE_PATH = 1 << 3;
export const STATE_SYMBOL = Symbol('$state'); export const STATE_SYMBOL = Symbol('$state');
export const LEGACY_PROPS = Symbol('legacy props'); export const LEGACY_PROPS = Symbol('legacy props');

@ -13,7 +13,6 @@ import {
PROXY_CHANGE_PATH, PROXY_CHANGE_PATH,
PROXY_PATH_SYMBOL, PROXY_PATH_SYMBOL,
PROXY_PRESERVE_PATH, PROXY_PRESERVE_PATH,
PROXY_REMOVE_PATH,
STATE_SYMBOL STATE_SYMBOL
} from '#client/constants'; } from '#client/constants';
import { UNINITIALIZED } from '../../constants.js'; import { UNINITIALIZED } from '../../constants.js';

@ -27,8 +27,7 @@ import {
UNOWNED, UNOWNED,
MAYBE_DIRTY, MAYBE_DIRTY,
BLOCK_EFFECT, BLOCK_EFFECT,
ROOT_EFFECT, ROOT_EFFECT
PROXY_REMOVE_PATH
} from '#client/constants'; } from '#client/constants';
import * as e from '../errors.js'; import * as e from '../errors.js';
import { legacy_mode_flag, tracing_mode_flag } from '../../flags/index.js'; import { legacy_mode_flag, tracing_mode_flag } from '../../flags/index.js';
@ -140,9 +139,7 @@ export function set(source, value, should_proxy = false) {
e.state_unsafe_mutation(); e.state_unsafe_mutation();
} }
let new_value = should_proxy let new_value = should_proxy ? proxy(value, DEV ? source.trace_name : undefined) : value;
? proxy(value, DEV ? source.trace_name : undefined, DEV ? PROXY_REMOVE_PATH : undefined)
: value;
return internal_set(source, new_value); return internal_set(source, new_value);
} }

Loading…
Cancel
Save