@@ -206,21 +206,32 @@ public void testJSBuiltinCanBeOverwritten() {
206206
207207 @ Test
208208 public void testForeignInstanceof () {
209- testInstanceofIntl ("Array" , ProxyArray .fromArray ("fun" , "with" , "proxy" , "array" ));
210- testInstanceofIntl ("Date" , Instant .now ());
211- testInstanceofIntl ("Map" , new TestTruffleHash ());
212- testInstanceofIntl ("String" , new TestTruffleString ());
213- testInstanceofIntl ("Boolean" , new TestTruffleBoolean ());
214- testInstanceofIntl ("Number" , new TestTruffleNumber ());
215- testInstanceofIntl ("Function" , (ProxyExecutable ) v -> true );
216- testInstanceofIntl ("Object" , new Object ());
209+ // test expected Instance
210+ Assert .assertTrue (testInstanceofIntl ("Array" , ProxyArray .fromArray ("fun" , "with" , "proxy" , "array" )));
211+ // Assert.assertTrue(testInstanceofIntl("Date", Instant.now())); //see GR-39319
212+ Assert .assertTrue (testInstanceofIntl ("Map" , new TestTruffleHash ()));
213+ Assert .assertTrue (testInstanceofIntl ("String" , new TestTruffleString ()));
214+ Assert .assertTrue (testInstanceofIntl ("Boolean" , new TestTruffleBoolean ()));
215+ Assert .assertTrue (testInstanceofIntl ("Number" , new TestTruffleNumber ()));
216+ Assert .assertTrue (testInstanceofIntl ("Function" , (ProxyExecutable ) v -> true ));
217+ Assert .assertTrue (testInstanceofIntl ("Object" , new Object ()));
218+
219+ // test non-matching instance
220+ Assert .assertFalse (testInstanceofIntl ("RegExp" , ProxyArray .fromArray ("fun" , "with" , "proxy" , "array" )));
221+ Assert .assertFalse (testInstanceofIntl ("RegExp" , Instant .now ()));
222+ Assert .assertFalse (testInstanceofIntl ("RegExp" , new TestTruffleHash ()));
223+ Assert .assertFalse (testInstanceofIntl ("RegExp" , new TestTruffleString ()));
224+ Assert .assertFalse (testInstanceofIntl ("RegExp" , new TestTruffleBoolean ()));
225+ Assert .assertFalse (testInstanceofIntl ("RegExp" , new TestTruffleNumber ()));
226+ Assert .assertFalse (testInstanceofIntl ("RegExp" , (ProxyExecutable ) v -> true ));
227+ Assert .assertFalse (testInstanceofIntl ("RegExp" , new Object ()));
217228 }
218229
219- private static void testInstanceofIntl (String prototype , Object obj ) {
220- String code = "(obj) => { return (obj instanceof " + prototype + "); }" ;
230+ private static boolean testInstanceofIntl (String prototype , Object obj ) {
231+ String code = "(obj) => { return (obj instanceof " + prototype + ") && (obj instanceof Object) ; }" ;
221232 try (Context context = JSTest .newContextBuilder (ID ).build ()) {
222233 Value result = context .eval (ID , code ).execute (obj );
223- Assert . assertTrue ( result .asBoolean () );
234+ return result .asBoolean ();
224235 }
225236 }
226237
0 commit comments