@@ -141,8 +141,7 @@ export function configurePrecision (engine, constructor, compatible = true) {
141141 engine . addMethod ( '===' , {
142142 method : ( args ) => {
143143 if ( args . length === 2 ) {
144- if ( args [ 0 ] . eq ) return args [ 0 ] . eq ( args [ 1 ] )
145- if ( args [ 1 ] . eq ) return args [ 1 ] . eq ( args [ 0 ] )
144+ if ( args [ 0 ] . eq && args [ 1 ] . eq ) return args [ 0 ] . eq ( args [ 1 ] )
146145 return args [ 0 ] === args [ 1 ]
147146 }
148147 for ( let i = 1 ; i < args . length ; i ++ ) {
@@ -155,11 +154,48 @@ export function configurePrecision (engine, constructor, compatible = true) {
155154 traverse : true
156155 } , { sync : true , deterministic : true } )
157156
158- engine . addMethod ( '!==' , {
157+ engine . addMethod ( '==' , {
158+ method : ( args ) => {
159+ if ( args . length === 2 ) {
160+ if ( args [ 0 ] . eq ) return args [ 0 ] . eq ( args [ 1 ] )
161+ if ( args [ 1 ] . eq ) return args [ 1 ] . eq ( args [ 0 ] )
162+ // eslint-disable-next-line eqeqeq
163+ return args [ 0 ] == args [ 1 ]
164+ }
165+ for ( let i = 1 ; i < args . length ; i ++ ) {
166+ if ( args [ i - 1 ] . eq && ! args [ i - 1 ] . eq ( args [ i ] ) ) return false
167+ if ( args [ i ] . eq && ! args [ i ] . eq ( args [ i - 1 ] ) ) return false
168+ // eslint-disable-next-line eqeqeq
169+ if ( args [ i - 1 ] != args [ i ] ) return false
170+ }
171+ return true
172+ } ,
173+ traverse : true
174+ } , { sync : true , deterministic : true } )
175+
176+ engine . addMethod ( '!=' , {
159177 method : ( args ) => {
160178 if ( args . length === 2 ) {
161179 if ( args [ 0 ] . eq ) return ! args [ 0 ] . eq ( args [ 1 ] )
162180 if ( args [ 1 ] . eq ) return ! args [ 1 ] . eq ( args [ 0 ] )
181+ // eslint-disable-next-line eqeqeq
182+ return args [ 0 ] != args [ 1 ]
183+ }
184+ for ( let i = 1 ; i < args . length ; i ++ ) {
185+ if ( args [ i - 1 ] . eq && args [ i - 1 ] . eq ( args [ i ] ) ) return false
186+ if ( args [ i ] . eq && args [ i ] . eq ( args [ i - 1 ] ) ) return false
187+ // eslint-disable-next-line eqeqeq
188+ if ( args [ i - 1 ] !== args [ i ] ) return true
189+ }
190+ return true
191+ } ,
192+ traverse : true
193+ } , { sync : true , deterministic : true } )
194+
195+ engine . addMethod ( '!==' , {
196+ method : ( args ) => {
197+ if ( args . length === 2 ) {
198+ if ( args [ 0 ] . eq && args [ 1 ] . eq ) return ! args [ 0 ] . eq ( args [ 1 ] )
163199 return args [ 0 ] !== args [ 1 ]
164200 }
165201 for ( let i = 1 ; i < args . length ; i ++ ) {
0 commit comments