Skip to content

Commit

Permalink
Simplify tracked assignments when something unknown is assigned.
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Nov 8, 2017
1 parent 5132d3b commit eb1c581
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/ast/variables/StructuredAssignmentTracker.js
@@ -1,14 +1,23 @@
import { UNKNOWN_ASSIGNMENT } from '../values';

const SET_KEY = { type: 'SET_KEY' };
export const UNKNOWN_KEY = { type: 'UNKNOWN_KEY' };

const UNKNOWN_ASSIGNMENTS = new Map( [ [ SET_KEY, new Set( [ UNKNOWN_ASSIGNMENT ] ) ] ] );

export default class StructuredAssignmentTracker {
constructor () {
this._assignments = new Map( [ [ SET_KEY, new Set() ] ] );
}

addAtPath ( path, assignment ) {
if ( this._assignments === UNKNOWN_ASSIGNMENTS ) return;
if ( path.length === 0 ) {
this._assignments.get( SET_KEY ).add( assignment );
if ( assignment === UNKNOWN_ASSIGNMENT ) {
this._assignments = UNKNOWN_ASSIGNMENTS;
} else {
this._assignments.get( SET_KEY ).add( assignment );
}
} else {
const [ nextPath, ...remainingPath ] = path;
if ( !this._assignments.has( nextPath ) ) {
Expand Down

0 comments on commit eb1c581

Please sign in to comment.