Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

avoid calling peekMeta when meta does not exist #17057

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions packages/@ember/-internals/meta/lib/meta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ export function setMeta(obj: object, meta: Meta) {
metaStore.set(obj, meta);
}

export function peekMeta(obj: object) {
export function peekMeta(obj: object): Meta | null {
assert('Cannot call `peekMeta` on null', obj !== null);
assert('Cannot call `peekMeta` on undefined', obj !== undefined);
assert(
Expand Down Expand Up @@ -651,6 +651,8 @@ export function peekMeta(obj: object) {

pointer = getPrototypeOf(pointer);
}

return null;
}

/**
Expand All @@ -676,7 +678,7 @@ export function deleteMeta(obj: object) {
}

let meta = peekMeta(obj);
if (meta !== undefined) {
if (meta !== null) {
meta.destroy();
}
}
Expand Down Expand Up @@ -717,7 +719,7 @@ export const meta: {
let maybeMeta = peekMeta(obj);

// remove this code, in-favor of explicit parent
if (maybeMeta !== undefined && maybeMeta.source === obj) {
if (maybeMeta !== null && maybeMeta.source === obj) {
return maybeMeta;
}

Expand Down Expand Up @@ -749,7 +751,7 @@ export function descriptorFor(obj: object, keyName: string, _meta?: Meta) {

let meta = _meta === undefined ? peekMeta(obj) : _meta;

if (meta !== undefined) {
if (meta !== null) {
return meta.peekDescriptors(keyName);
}
}
Expand Down
4 changes: 2 additions & 2 deletions packages/@ember/-internals/metal/lib/chains.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ function removeChainWatcher(obj: object, keyName: string, node: ChainNode, _meta
let meta = _meta === undefined ? peekMeta(obj) : _meta;

if (
meta === undefined ||
meta === null ||
meta.isSourceDestroying() ||
meta.isMetaDestroyed() ||
meta.readableChainWatchers() === undefined
Expand Down Expand Up @@ -336,7 +336,7 @@ function lazyGet(obj: object, key: string): any {
let meta = peekMeta(obj);

// check if object meant only to be a prototype
if (meta !== undefined && meta.proto === obj) {
if (meta !== null && meta.proto === obj) {
return;
}

Expand Down
2 changes: 1 addition & 1 deletion packages/@ember/-internals/metal/lib/computed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ class ComputedProperty extends Descriptor implements DescriptorWithDependentKeys

// don't create objects just to invalidate
let meta = peekMeta(obj);
if (meta === undefined || meta.source !== obj) {
if (meta === null || meta.source !== obj) {
return;
}

Expand Down
2 changes: 1 addition & 1 deletion packages/@ember/-internals/metal/lib/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ export function sendEvent(
*/
export function hasListeners(obj: object, eventName: string) {
let meta = peekMeta(obj);
if (meta === undefined) {
if (meta === null) {
return false;
}
let matched = meta.matchingListeners(eventName);
Expand Down
4 changes: 2 additions & 2 deletions packages/@ember/-internals/metal/lib/mixin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ export default class Mixin {
static mixins(obj: object): Mixin[] {
let meta = peekMeta(obj);
let ret: Mixin[] = [];
if (meta === undefined) {
if (meta === null) {
return ret;
}

Expand Down Expand Up @@ -611,7 +611,7 @@ export default class Mixin {
return _detect(obj, this);
}
let meta = peekMeta(obj);
if (meta === undefined) {
if (meta === null) {
return false;
}
return meta.hasMixin(this);
Expand Down
2 changes: 1 addition & 1 deletion packages/@ember/-internals/metal/lib/properties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export function INHERITING_GETTER_FUNCTION(name: string): InheritingGetterFuncti
function IGETTER_FUNCTION(this: any) {
let meta = peekMeta(this);
let val;
if (meta !== undefined) {
if (meta !== null) {
val = meta.readInheritedValue('values', name);
}

Expand Down
2 changes: 1 addition & 1 deletion packages/@ember/-internals/metal/lib/property_events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ if (ENABLE_PROPERTY_DID_CHANGE) {
*/
function notifyPropertyChange(obj: object, keyName: string, _meta?: Meta): void {
let meta = _meta === undefined ? peekMeta(obj) : _meta;
let hasMeta = meta !== undefined;
let hasMeta = meta !== null;

if (hasMeta && (meta.isInitializing() || meta.isPrototypeMeta(obj))) {
return;
Expand Down
2 changes: 1 addition & 1 deletion packages/@ember/-internals/metal/lib/property_set.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ export function set(obj: object, keyName: string, value: any, tolerant?: boolean

if (DEBUG) {
setWithMandatorySetter = (meta, obj, keyName, value) => {
if (meta !== undefined && meta.peekWatching(keyName) > 0) {
if (meta !== null && meta.peekWatching(keyName) > 0) {
makeEnumerable(obj, keyName);
meta.writeValue(obj, keyName, value);
} else {
Expand Down
2 changes: 1 addition & 1 deletion packages/@ember/-internals/metal/lib/watch_key.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export function unwatchKey(obj: object, keyName: string, _meta?: Meta) {
let meta = _meta === undefined ? peekMeta(obj) : _meta;

// do nothing of this object has already been destroyed
if (meta === undefined || meta.isSourceDestroyed()) {
if (meta === null || meta.isSourceDestroyed()) {
return;
}

Expand Down
2 changes: 1 addition & 1 deletion packages/@ember/-internals/metal/lib/watch_path.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export function watchPath(obj: any, keyPath: string, meta?: Meta): void {

export function unwatchPath(obj: any, keyPath: string, meta?: Meta): void {
let m = meta === undefined ? peekMeta(obj) : meta;
if (m === undefined) {
if (m === null) {
return;
}
let counter = m.peekWatching(keyPath);
Expand Down
2 changes: 1 addition & 1 deletion packages/ember/tests/routing/query_params_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1334,7 +1334,7 @@ moduleFor(
Route.extend({
model(p, trans) {
let m = peekMeta(trans[PARAMS_SYMBOL].application);
assert.ok(m === undefined, "A meta object isn't constructed for this params POJO");
assert.ok(m === null, "A meta object isn't constructed for this params POJO");
},
})
);
Expand Down