Sfoglia il codice sorgente

[js] generate `value instanceof MyClass` instead of `Std.is(value, MyClass)` (#6687)

Alexander Kuzmenko 7 anni fa
parent
commit
3b3207587b
1 ha cambiato i file con 2 aggiunte e 0 eliminazioni
  1. 2 0
      src/optimization/optimizer.ml

+ 2 - 0
src/optimization/optimizer.ml

@@ -170,6 +170,8 @@ let api_inline ctx c field params p = match c.cl_path, field, params with
 			let null = mk (TConst TNull) (mk_mono()) p in
 			let null = mk (TConst TNull) (mk_mono()) p in
 			let not_enum = mk (TBinop (Ast.OpEq, enum, null)) tbool p in
 			let not_enum = mk (TBinop (Ast.OpEq, enum, null)) tbool p in
 			Some (mk (TBinop (Ast.OpBoolAnd, iof, not_enum)) tbool p)
 			Some (mk (TBinop (Ast.OpBoolAnd, iof, not_enum)) tbool p)
+		| TTypeExpr (TClassDecl cls) when not cls.cl_interface ->
+			Some (Texpr.Builder.fcall esyntax "instanceof" [o;t] tbool p)
 		| _ ->
 		| _ ->
 			None)
 			None)
 	| (["cs" | "java"],"Lib"),("nativeArray"),[{ eexpr = TArrayDecl args } as edecl; _]
 	| (["cs" | "java"],"Lib"),("nativeArray"),[{ eexpr = TArrayDecl args } as edecl; _]