diff -Nru haxe-4.2.2/debian/changelog haxe-4.2.3/debian/changelog --- haxe-4.2.2/debian/changelog 2021-06-07 12:50:47.000000000 +0000 +++ haxe-4.2.3/debian/changelog 2021-07-03 10:55:22.000000000 +0000 @@ -1,614 +1,620 @@ -haxe (1:4.2.2-1~ubuntu20.10.1~ppa1) groovy; urgency=medium +haxe (1:4.2.3-1~ubuntu20.10.1~ppa1) groovy; urgency=medium * No-change backport to groovy - -- Andy Li Mon, 07 Jun 2021 20:50:47 +0800 + -- Andy Li Sat, 03 Jul 2021 18:55:22 +0800 -haxe (1:4.2.2-1) experimental; urgency=medium - - * New upstream version. - * Update d/watch. - - -- Andy Li Mon, 07 Jun 2021 16:53:59 +0800 - -haxe (1:4.2.1-1) experimental; urgency=medium - - * New upstream version. - - -- Andy Li Sat, 27 Feb 2021 15:43:18 +0800 - -haxe (1:4.2.0-1) experimental; urgency=medium - - * New upstream version. - - -- Andy Li Fri, 12 Feb 2021 12:57:25 +0800 - -haxe (1:4.1.5-1) unstable; urgency=medium - - * New upstream version. - - -- Andy Li Tue, 05 Jan 2021 22:45:12 +0800 - -haxe (1:4.1.4-1) unstable; urgency=medium - - * New upstream version. - - -- Andy Li Sun, 20 Sep 2020 23:24:55 +0800 - -haxe (1:4.1.3-1) unstable; urgency=medium - - * New upstream version. - - -- Andy Li Thu, 23 Jul 2020 21:47:29 +0800 - -haxe (1:4.1.2-1) unstable; urgency=medium - - * New upstream version. - - -- Andy Li Sat, 20 Jun 2020 12:57:44 +0800 - -haxe (1:4.1.1-1) unstable; urgency=medium - - * New upstream version. - * Remove version.ml.diff patch, which was integrated in this - version already. - * Bump Standards-Version to 4.5.0 (no changes). - - -- Andy Li Mon, 25 May 2020 11:43:10 +0800 - -haxe (1:4.1.0-1) unstable; urgency=medium - - * New upstream version. - * Add version.ml.diff patch to avoid usage of git during build. - * Update d/rules. - * Bump debhelper compat to 10. - - -- Andy Li Thu, 21 May 2020 09:57:13 +0800 - -haxe (1:4.0.5-1) unstable; urgency=medium - - * New upstream version. - - -- Andy Li Wed, 18 Dec 2019 03:29:59 +0800 - -haxe (1:4.0.3-1) unstable; urgency=medium - - * New upstream version. - - -- Andy Li Fri, 29 Nov 2019 23:31:54 +0800 - -haxe (1:4.0.2-1) unstable; urgency=medium - - * New upstream version. - - -- Andy Li Tue, 12 Nov 2019 12:37:34 +0800 - -haxe (1:4.0.1-1) unstable; urgency=medium - - * New upstream version. - + Safe-strings compatible (Closes: #939961). - * Remove camlp5.diff, which is no longer needed. - * Bump Standards-Version to 4.4.1 (no changes). - - -- Andy Li Sun, 10 Nov 2019 21:25:41 +0800 - -haxe (1:3.4.7-2) unstable; urgency=medium - - * Add camlp5.diff that replaces camlp4 with camlp5 (#933722). - * Use https for Homepage. - * Bump Standards-Version to 4.4.0 (no changes). - - -- Andy Li Mon, 12 Aug 2019 10:38:36 +0800 - -haxe (1:3.4.7-1) unstable; urgency=low - - * New upstream version. - * Bump Standards-Version to 4.1.3 (no changes). - - -- Andy Li Mon, 26 Mar 2018 09:55:24 +0800 - -haxe (1:3.4.4-2) unstable; urgency=low - - * Use dh_ocaml for ocamlopt detection. - * Remove redundant ocaml-best-compilers, ocaml-native-compilers depends. - * Add dh_missing. - * Add autopkgtest support. - - -- Andy Li Tue, 21 Nov 2017 15:30:27 +0800 - -haxe (1:3.4.4-1) unstable; urgency=medium - - * New upstream version. - + Fix flash target broken when compiled with OCaml 4.05. - * Bump Standards-Version to 4.1.1 (no changes). - * Update d/rules to use /usr/share/dpkg/pkg-info.mk to get source version. - * Update d/watch to use the GitHub latest release page to avoid getting - pre-release version. - - -- Andy Li Mon, 09 Oct 2017 09:50:21 +0800 - -haxe (1:3.4.3-1) unstable; urgency=low - - * New upstream version. - * Remove hardening-* lintian overrides. - * Bump Standards-Version to 4.1.0 (no changes). - - -- Andy Li Mon, 25 Sep 2017 13:38:07 +0800 - -haxe (1:3.4.2-1) unstable; urgency=low - - * New upstream version. - * Fix d/watch. - - -- Andy Li Thu, 23 Mar 2017 10:39:18 +0800 - -haxe (1:3.4.0-1) unstable; urgency=low - - * New upstream version. - + Depends on PCRE. - + There is no bundled jQuery source file, thus, remove +dfsg tag. - + Remove dependencies of libjs-jquery and libjs-swfobject. - + Remove upstream applied patch. - + Update d/copyright. - * Update d/watch and get-orig-source target (no +dfsg). - * Bump Standards-Version to 3.9.8 (no changes). - - -- Andy Li Thu, 02 Feb 2017 09:27:56 +0800 - -haxe (1:3.2.1+dfsg-1) unstable; urgency=low - - * New upstream version. - - -- Andy Li Wed, 14 Oct 2015 10:42:48 +0800 - -haxe (1:3.2.0+dfsg-1) unstable; urgency=low - - * Adopt package (Closes: #799151). - + Set maintainer to myself. - * Set Vcs-* fields to Haxe Foundation haxe-debian git repo. - * New upstream version. - + Update neko version dependency. - * Remove outdated and discontinued emacs haxe mode. - * Clean up copyright. - + Remove entries of removed files. - * Update d/watch and get-orig-source target - + Create tar manually to include git submodules. - - -- Andy Li Wed, 26 Aug 2015 15:01:06 +0800 - -haxe (1:3.0.0~svn6707+dfsg-1) unstable; urgency=medium - - * Adopt as Debian Flash Team (Closes: #742052). - + Set maintainer to Debian Flash team, add myself to uploaders. - * Set Vcs-* fields to updated collab-maint git repo. - * Replace jquery-latest.min.js and swfobject.js with symlinks to system ones. - + Remove sourceless files from upstream tarball (Closes: #736596). - + Add libjs-jquery and libjs-swfobject runtime dependencies. - * Convert d/copyright to format 1.0, thanks cme. - + Add Files-Excluded to remove sourceless files. - * Bump Standards-Version to 3.9.6 (no changes). - * Move d/watch check to github, add get-orig-source target. - - -- Gabriele Giacone <1o5g4r8o@gmail.com> Tue, 19 May 2015 19:00:57 +0200 - -haxe (1:3.0.0~svn6707-4) unstable; urgency=low - - * QA upload. - * debian/haxe.install: Fix typo that resulted in misplaced .el files. - * debian/rules: Comment out chmod call specifying odd /usr/lib permissions. - - -- Aaron M. Ucko Fri, 26 Jul 2013 21:26:38 -0400 - -haxe (1:3.0.0~svn6707-3) unstable; urgency=low - - * QA upload. - * Upload to unstable. - * Bytecompiling builds all archs. (Closes: #621890). - - -- Barry deFreese Fri, 26 Jul 2013 09:04:49 -0400 - -haxe (1:3.0.0~svn6707-2) experimental; urgency=low - - * QA upload. - * Bytecompile everything. - - -- Barry deFreese Tue, 23 Jul 2013 11:05:26 -0400 - -haxe (1:3.0.0~svn6707-1) experimental; urgency=low - - * QA upload. - + Set maintainer to Debian QA Group . - * New upstream release. - * Use upstream Makefile to build. - * Make VCS tags canonical. - * Fix grammar errors in manpages. - * Add watch file. - * Bump debhelper build-dep and compat to 9. - + Convert rules to simple dh style. - * Bump Standards Version to 3.9.4. - - -- Barry deFreese Thu, 18 Jul 2013 13:24:29 -0400 - -haxe (1:2.7+20110131-3) unstable; urgency=low - - * Fix linking so that it works with multiarch-enabled zlib by simply - passing -lz to the ocaml compiler, thanks to Steve Langasek. - (Closes: #622853) - * Include a small test case to sanity-check the build. - - -- Jens Peter Secher Sat, 16 Apr 2011 15:01:20 +0200 - -haxe (1:2.7+20110131-2) unstable; urgency=low - - * Updated man page and bash comletion to include new macro options. - - -- Jens Peter Secher Sun, 06 Feb 2011 22:27:47 +0100 - -haxe (1:2.7+20110131-1) experimental; urgency=low - - * New upstream version. - * Install standard library in /usr/share/haxe/std to cater for the haXe - executable mangling of the class path: the path has to end in /std. - * Include the upstream repository in Debian version to allow updating - the upstream tarball. - - -- Jens Peter Secher Tue, 01 Feb 2011 00:29:31 +0100 - -haxe (1:2.6-1) experimental; urgency=low - - * New upstream version, which uses new features not present in the - Debian version of ocaml extlib (see #596622), so reverting part of - #519630 by using newest version of extlib directly from Motion-Twin - CVS. - * Bumped Standards-Version to 3.9.1, no changes. - - -- Jens Peter Secher Wed, 15 Sep 2010 21:42:56 +0200 - -haxe (1:2.5-1) unstable; urgency=low - - * New upstream version, taken from new upstream subversion repository. - - -- Jens Peter Secher Sun, 31 Jan 2010 23:08:43 +0100 - -haxe (1:2.4-4) unstable; urgency=low - - * Converted to dpkg-source format 3.0 (quilt). - * Use mercurial-buildpackage for repository maintenance, so old - repository does not exist any more. - - -- Jens Peter Secher Sun, 31 Jan 2010 22:37:10 +0100 - -haxe (1:2.4-3) unstable; urgency=low - - * Rebuild because the i386 had broken dependencies on neko. - - -- Jens Peter Secher Sat, 14 Nov 2009 11:29:58 +0100 - -haxe (1:2.4-2) unstable; urgency=low - - * Reinclude haxe-mode for Emacs after fixing emacs23 problem. - * Depend on neko because haxelib and haxedoc need the libraries. - * Bumped Standards-Version to 3.8.3, no change. - - -- Jens Peter Secher Tue, 08 Sep 2009 15:43:54 +0200 - -haxe (1:2.4-1) unstable; urgency=low - - * New upstream version (CVS 2009-08-01). - * Removed obsolete parts of the copyright file now that ExtLib is - not included anymore. - * Included patch for Ubuntu location of zlib, thanks to Alessio Treglia. - (Closes: #533159) - * Removed haxe-mode to get it into its own package. - (Closes: #521222) - * Included new commands in bash_completion. - * Removed obsolete Lintian overrides. - * Bumped Standards-Version to 3.8.2, no change. - - -- Jens Peter Secher Mon, 03 Aug 2009 21:29:45 +0200 - -haxe (1:2.3-1~bpo40+1) etch-backports; urgency=low - - * Backport to Lenny, adapt to old ocaml and debhelper 5. - - -- Jens Peter Secher Mon, 15 Jun 2009 21:40:08 +0200 - -haxe (1:2.3-1~bpo50+1) lenny-backports; urgency=low - - * Backport to Lenny, adapt to old camlp4. - - -- Jens Peter Secher Thu, 28 May 2009 20:06:08 +0200 - -haxe (1:2.3-1) unstable; urgency=low - - * New upstream version. - * Remove patch ocaml-3.11-compile.diff because it is included upstream. - * Bumped debhelper version to 7. - * Updated the haxe manpage. - - -- Jens Peter Secher Mon, 25 May 2009 22:05:05 +0200 - -haxe (1:2.2-2) unstable; urgency=low - - * Use ocamlfind to locate and use the libraries xml-light and extlib - which already exist in Debian as separate packages. - (Closes: #519630) - * Fixed compile error with camlp4 3.11, thanks to Stéphane Glondu. - (Closes: #519627) - * Use quilt instead of dpatch for patches, and describe how to use - quilt in Debian.source (thanks to Russ Allbery). - * Added a Vcs-Hg control filed to indicate the location of the public - repository. - * Bumped Standards-Version to 3.8.1. - - -- Jens Peter Secher Wed, 18 Mar 2009 23:09:50 +0100 - -haxe (1:2.2-1) experimental; urgency=low - - * New upstream release. - * Updated install scripts to include OCaml optimisations. - * Updated man page to include swf9 option. - * Fixed broken bash completion. - - -- Jens Peter Secher Sun, 14 Dec 2008 18:22:19 +0100 - -haxe (1:2.1-1) experimental; urgency=low - - * Fixed build failure when using byte-code version of ocaml. - (Closes: #501538) - * Synchronise with 2.1 release. - - -- Jens Peter Secher Thu, 09 Oct 2008 21:30:03 +0200 - -haxe (1:2.0.1-1) experimental; urgency=low - - * Newest CVS checkout for experimental. - * Build against neko 1.8.0. - - -- Jens Peter Secher Sun, 05 Oct 2008 11:24:49 +0200 - -haxe (1:2.0-1~bpo40+1) etch-backports; urgency=low - - * Backport to Etch, which requires dropping the dependency on camlp4 - and lowering dependency on emacs22 to emacs21. - - -- Jens Peter Secher Sun, 03 Aug 2008 14:28:20 +0200 - -haxe (1:2.0-1) unstable; urgency=low - - * New upstream release. - - -- Jens Peter Secher Thu, 31 Jul 2008 13:44:35 +0200 - -haxe (1:1.19-3) unstable; urgency=low - - * Remove bashism in script. - (Closes: #484390) - * Upgrade to Policy 3.8.0 by including a README.source explaining how to - use dpatch. - - -- Jens Peter Secher Sun, 15 Jun 2008 11:04:09 +0200 - -haxe (1:1.19-2~bpo40+1) etch-backports; urgency=low - - * Backport to Etch, which requires dropping the dependency on camlp4. - - -- Jens Peter Secher Sat, 17 May 2008 15:08:08 +0200 - -haxe (1:1.19-2) unstable; urgency=low - - * Remove bashism in script. - (Closes: #477202) - - -- Jens Peter Secher Sat, 26 Apr 2008 11:31:11 +0200 - -haxe (1:1.19-1) unstable; urgency=low - - * New upstream release. - - -- Jens Peter Secher Thu, 10 Apr 2008 21:47:44 +0200 - -haxe (1:1.18-1~bpo40+1) etch-backports; urgency=low - - * Backport to Etch, which requires dropping the dependency on camlp4. - - -- Jens Peter Secher Sat, 01 Mar 2008 12:32:55 +0100 - -haxe (1:1.18-1) unstable; urgency=low - - * New upstream release. - - -- Jens Peter Secher Tue, 26 Feb 2008 19:55:05 +0100 - -haxe (1:1.17-1~bpo40+2) etch-backports; urgency=low - - * Rebuild with fixed neko backport to get dependency right. - - -- Jens Peter Secher Tue, 05 Feb 2008 22:10:39 +0100 - -haxe (1:1.17-1~bpo40+1) etch-backports; urgency=low - - * Backport to Etch, which requires dropping the dependency on camlp4. - - -- Jens Peter Secher Tue, 05 Feb 2008 22:10:39 +0100 - -haxe (1:1.17-1) unstable; urgency=low - - * New upstream release. - * Added a bash completion specification. - * Bumped Standards-Version to 3.7.3. - - -- Jens Peter Secher Mon, 14 Jan 2008 23:17:46 +0100 - -haxe (1:1.16-1~bpo40+1) etch-backports; urgency=low - - * Backport to Etch, which requires dropping the dependency on camlp4. - - -- Jens Peter Secher Mon, 19 Nov 2007 21:31:56 +0100 - -haxe (1:1.16-1) unstable; urgency=low - - * New upstream release. - - -- Jens Peter Secher Wed, 07 Nov 2007 22:15:33 +0100 - -haxe (1:1.15-2) unstable; urgency=low - - * Make sure there is a Caml Preprocessor & Pretty Printer (camlp4) when - building. - (Closes: #441510) - - -- Jens Peter Secher Mon, 10 Sep 2007 23:18:51 +0200 - -haxe (1:1.15-1) unstable; urgency=low - - * New upstream release. - - -- Jens Peter Secher Wed, 29 Aug 2007 21:28:45 +0200 - -haxe (1:1.14-3) unstable; urgency=low - - * The bytecode compiler should have the same name as the native - compiler, which fixes FTBFS on S390, M68k, Arm, and MIPS. - - -- Jens Peter Secher Sun, 29 Jul 2007 15:07:57 +0200 - -haxe (1:1.14-2) unstable; urgency=low - - * Use $CURDIR everywhere in debian/rules. - (Closes: #435026) - - -- Jens Peter Secher Sun, 29 Jul 2007 01:11:06 +0200 - -haxe (1:1.14-1) unstable; urgency=low - - * New upstream release. - * Updated man pages. - * Prefer emacs22 over emacs21. - (Closes: #434918) - * Simplify install, removal, and load-path by using symlinks instead of - copying source files. - - -- Jens Peter Secher Sat, 28 Jul 2007 11:43:58 +0200 - -haxe (1:1.13-1bpo1) stable; urgency=low - - * Backport to etch (no change). - - -- Jens Peter Secher Sun, 27 May 2007 10:58:46 +0200 - -haxe (1:1.13-1) unstable; urgency=low - - * New upstream release. - * Updated man pages. - - -- Jens Peter Secher Sun, 27 May 2007 00:44:04 +0200 - -haxe (1:1.12-1) unstable; urgency=low - - * Switched to upstream version numbers. - * New version of haxe-mode.el which is now properly setup for emacsen - (but only for emacs-snapshot or emacs22, since haxe-mode depends on a - recent cc-mode). - - -- Jens Peter Secher Sun, 18 Mar 2007 15:25:36 +0100 - -haxe (20070307-1) experimental; urgency=low - - * New upstream release (~1.12). - * Updated man page accordingly. - - -- Jens Peter Secher Wed, 7 Mar 2007 00:30:04 +0100 - -haxe (20070224-1) experimental; urgency=low - - * New upstream release (~1.11) matches Neko version 1.5.3. - * New version of haxe-mode for Emacs. - - -- Jens Peter Secher Sat, 24 Feb 2007 16:10:56 +0100 - -haxe (20070106-1) experimental; urgency=low - - * New upstream release (~1.10). - * Updated manpages. - * Include haxe-mode for Emacs. - - -- Jens Peter Secher Sat, 6 Jan 2007 19:01:42 +0100 - -haxe (20061201-1) experimental; urgency=low - - * New upstream release. - * Include lintian overrides for unstripped bytecode files. - - -- Jens Peter Secher Fri, 1 Dec 2006 19:18:02 +0100 - -haxe (20061106-1bpo1) stable; urgency=low - - * Change the dependencies to backport to Sarge. - - -- Jens Peter Secher Sun, 12 Nov 2006 15:16:31 +0100 - -haxe (20061106-1) experimental; urgency=low - - * New upstream release (~1.08). - - Fixes flash6 code generation. - (Closes: #396141) - * Use neko to build haxelib and haxedoc executables, both of which - searches for the libneko.so by use of -rpath in /usr/lib/neko since we - do not want this private library to end up in /usr/lib. - - -- Jens Peter Secher Mon, 6 Nov 2006 18:21:09 +0100 - -haxe (20060912-2) unstable; urgency=low - - * Fixed build failure on architectures without a native ocaml compiler. - * Added Tag field to control file to test Enrico Zini's - debtags-updatecontrol. - * Changed description to match that on haxe.org . - - -- Jens Peter Secher Wed, 13 Sep 2006 09:38:12 +0200 - -haxe (20060912-1) unstable; urgency=low - - * New upstream release (1.07). - - -- Jens Peter Secher Tue, 12 Sep 2006 21:39:22 +0200 - -haxe (20060715-2) unstable; urgency=low - - * Fixed build failure on architectures without a native ocaml compiler, - thanks to Samuel Mimram and Paul Wise. - (Closes: #378373) - * Fixed misspelling in package description. - (Closes: #378631) - * Updated manual page. - - -- Jens Peter Secher Sat, 22 Jul 2006 10:39:48 +0200 - -haxe (20060715-1) unstable; urgency=low - - * New upstream release. - - -- Jens Peter Secher Sat, 15 Jul 2006 11:13:35 +0200 - -haxe (20060606-2) experimental; urgency=low - - * Avoid splitting off the arch-independent library files into a separate - package. - - -- Jens Peter Secher Wed, 7 Jun 2006 23:05:35 +0200 - -haxe (20060606-1) experimental; urgency=low - - * Included all copyright holders from the OCaml Extended standard - Library (ExtLib). - * Bumped Standards-Version to 3.7.2. - - -- Jens Peter Secher Tue, 6 Jun 2006 21:50:56 +0200 - -haxe (1.0-1) experimental; urgency=low - - * Inital package. - (Closes: #365425). - - -- Jens Peter Secher Sun, 30 Apr 2006 00:17:24 +0200 +haxe (1:4.2.3-1) experimental; urgency=medium + + * New upstream version. + + -- Andy Li Sat, 03 Jul 2021 17:57:10 +0800 + +haxe (1:4.2.2-1) experimental; urgency=medium + + * New upstream version. + * Update d/watch. + + -- Andy Li Mon, 07 Jun 2021 16:53:59 +0800 + +haxe (1:4.2.1-1) experimental; urgency=medium + + * New upstream version. + + -- Andy Li Sat, 27 Feb 2021 15:43:18 +0800 + +haxe (1:4.2.0-1) experimental; urgency=medium + + * New upstream version. + + -- Andy Li Fri, 12 Feb 2021 12:57:25 +0800 + +haxe (1:4.1.5-1) unstable; urgency=medium + + * New upstream version. + + -- Andy Li Tue, 05 Jan 2021 22:45:12 +0800 + +haxe (1:4.1.4-1) unstable; urgency=medium + + * New upstream version. + + -- Andy Li Sun, 20 Sep 2020 23:24:55 +0800 + +haxe (1:4.1.3-1) unstable; urgency=medium + + * New upstream version. + + -- Andy Li Thu, 23 Jul 2020 21:47:29 +0800 + +haxe (1:4.1.2-1) unstable; urgency=medium + + * New upstream version. + + -- Andy Li Sat, 20 Jun 2020 12:57:44 +0800 + +haxe (1:4.1.1-1) unstable; urgency=medium + + * New upstream version. + * Remove version.ml.diff patch, which was integrated in this + version already. + * Bump Standards-Version to 4.5.0 (no changes). + + -- Andy Li Mon, 25 May 2020 11:43:10 +0800 + +haxe (1:4.1.0-1) unstable; urgency=medium + + * New upstream version. + * Add version.ml.diff patch to avoid usage of git during build. + * Update d/rules. + * Bump debhelper compat to 10. + + -- Andy Li Thu, 21 May 2020 09:57:13 +0800 + +haxe (1:4.0.5-1) unstable; urgency=medium + + * New upstream version. + + -- Andy Li Wed, 18 Dec 2019 03:29:59 +0800 + +haxe (1:4.0.3-1) unstable; urgency=medium + + * New upstream version. + + -- Andy Li Fri, 29 Nov 2019 23:31:54 +0800 + +haxe (1:4.0.2-1) unstable; urgency=medium + + * New upstream version. + + -- Andy Li Tue, 12 Nov 2019 12:37:34 +0800 + +haxe (1:4.0.1-1) unstable; urgency=medium + + * New upstream version. + + Safe-strings compatible (Closes: #939961). + * Remove camlp5.diff, which is no longer needed. + * Bump Standards-Version to 4.4.1 (no changes). + + -- Andy Li Sun, 10 Nov 2019 21:25:41 +0800 + +haxe (1:3.4.7-2) unstable; urgency=medium + + * Add camlp5.diff that replaces camlp4 with camlp5 (#933722). + * Use https for Homepage. + * Bump Standards-Version to 4.4.0 (no changes). + + -- Andy Li Mon, 12 Aug 2019 10:38:36 +0800 + +haxe (1:3.4.7-1) unstable; urgency=low + + * New upstream version. + * Bump Standards-Version to 4.1.3 (no changes). + + -- Andy Li Mon, 26 Mar 2018 09:55:24 +0800 + +haxe (1:3.4.4-2) unstable; urgency=low + + * Use dh_ocaml for ocamlopt detection. + * Remove redundant ocaml-best-compilers, ocaml-native-compilers depends. + * Add dh_missing. + * Add autopkgtest support. + + -- Andy Li Tue, 21 Nov 2017 15:30:27 +0800 + +haxe (1:3.4.4-1) unstable; urgency=medium + + * New upstream version. + + Fix flash target broken when compiled with OCaml 4.05. + * Bump Standards-Version to 4.1.1 (no changes). + * Update d/rules to use /usr/share/dpkg/pkg-info.mk to get source version. + * Update d/watch to use the GitHub latest release page to avoid getting + pre-release version. + + -- Andy Li Mon, 09 Oct 2017 09:50:21 +0800 + +haxe (1:3.4.3-1) unstable; urgency=low + + * New upstream version. + * Remove hardening-* lintian overrides. + * Bump Standards-Version to 4.1.0 (no changes). + + -- Andy Li Mon, 25 Sep 2017 13:38:07 +0800 + +haxe (1:3.4.2-1) unstable; urgency=low + + * New upstream version. + * Fix d/watch. + + -- Andy Li Thu, 23 Mar 2017 10:39:18 +0800 + +haxe (1:3.4.0-1) unstable; urgency=low + + * New upstream version. + + Depends on PCRE. + + There is no bundled jQuery source file, thus, remove +dfsg tag. + + Remove dependencies of libjs-jquery and libjs-swfobject. + + Remove upstream applied patch. + + Update d/copyright. + * Update d/watch and get-orig-source target (no +dfsg). + * Bump Standards-Version to 3.9.8 (no changes). + + -- Andy Li Thu, 02 Feb 2017 09:27:56 +0800 + +haxe (1:3.2.1+dfsg-1) unstable; urgency=low + + * New upstream version. + + -- Andy Li Wed, 14 Oct 2015 10:42:48 +0800 + +haxe (1:3.2.0+dfsg-1) unstable; urgency=low + + * Adopt package (Closes: #799151). + + Set maintainer to myself. + * Set Vcs-* fields to Haxe Foundation haxe-debian git repo. + * New upstream version. + + Update neko version dependency. + * Remove outdated and discontinued emacs haxe mode. + * Clean up copyright. + + Remove entries of removed files. + * Update d/watch and get-orig-source target + + Create tar manually to include git submodules. + + -- Andy Li Wed, 26 Aug 2015 15:01:06 +0800 + +haxe (1:3.0.0~svn6707+dfsg-1) unstable; urgency=medium + + * Adopt as Debian Flash Team (Closes: #742052). + + Set maintainer to Debian Flash team, add myself to uploaders. + * Set Vcs-* fields to updated collab-maint git repo. + * Replace jquery-latest.min.js and swfobject.js with symlinks to system ones. + + Remove sourceless files from upstream tarball (Closes: #736596). + + Add libjs-jquery and libjs-swfobject runtime dependencies. + * Convert d/copyright to format 1.0, thanks cme. + + Add Files-Excluded to remove sourceless files. + * Bump Standards-Version to 3.9.6 (no changes). + * Move d/watch check to github, add get-orig-source target. + + -- Gabriele Giacone <1o5g4r8o@gmail.com> Tue, 19 May 2015 19:00:57 +0200 + +haxe (1:3.0.0~svn6707-4) unstable; urgency=low + + * QA upload. + * debian/haxe.install: Fix typo that resulted in misplaced .el files. + * debian/rules: Comment out chmod call specifying odd /usr/lib permissions. + + -- Aaron M. Ucko Fri, 26 Jul 2013 21:26:38 -0400 + +haxe (1:3.0.0~svn6707-3) unstable; urgency=low + + * QA upload. + * Upload to unstable. + * Bytecompiling builds all archs. (Closes: #621890). + + -- Barry deFreese Fri, 26 Jul 2013 09:04:49 -0400 + +haxe (1:3.0.0~svn6707-2) experimental; urgency=low + + * QA upload. + * Bytecompile everything. + + -- Barry deFreese Tue, 23 Jul 2013 11:05:26 -0400 + +haxe (1:3.0.0~svn6707-1) experimental; urgency=low + + * QA upload. + + Set maintainer to Debian QA Group . + * New upstream release. + * Use upstream Makefile to build. + * Make VCS tags canonical. + * Fix grammar errors in manpages. + * Add watch file. + * Bump debhelper build-dep and compat to 9. + + Convert rules to simple dh style. + * Bump Standards Version to 3.9.4. + + -- Barry deFreese Thu, 18 Jul 2013 13:24:29 -0400 + +haxe (1:2.7+20110131-3) unstable; urgency=low + + * Fix linking so that it works with multiarch-enabled zlib by simply + passing -lz to the ocaml compiler, thanks to Steve Langasek. + (Closes: #622853) + * Include a small test case to sanity-check the build. + + -- Jens Peter Secher Sat, 16 Apr 2011 15:01:20 +0200 + +haxe (1:2.7+20110131-2) unstable; urgency=low + + * Updated man page and bash comletion to include new macro options. + + -- Jens Peter Secher Sun, 06 Feb 2011 22:27:47 +0100 + +haxe (1:2.7+20110131-1) experimental; urgency=low + + * New upstream version. + * Install standard library in /usr/share/haxe/std to cater for the haXe + executable mangling of the class path: the path has to end in /std. + * Include the upstream repository in Debian version to allow updating + the upstream tarball. + + -- Jens Peter Secher Tue, 01 Feb 2011 00:29:31 +0100 + +haxe (1:2.6-1) experimental; urgency=low + + * New upstream version, which uses new features not present in the + Debian version of ocaml extlib (see #596622), so reverting part of + #519630 by using newest version of extlib directly from Motion-Twin + CVS. + * Bumped Standards-Version to 3.9.1, no changes. + + -- Jens Peter Secher Wed, 15 Sep 2010 21:42:56 +0200 + +haxe (1:2.5-1) unstable; urgency=low + + * New upstream version, taken from new upstream subversion repository. + + -- Jens Peter Secher Sun, 31 Jan 2010 23:08:43 +0100 + +haxe (1:2.4-4) unstable; urgency=low + + * Converted to dpkg-source format 3.0 (quilt). + * Use mercurial-buildpackage for repository maintenance, so old + repository does not exist any more. + + -- Jens Peter Secher Sun, 31 Jan 2010 22:37:10 +0100 + +haxe (1:2.4-3) unstable; urgency=low + + * Rebuild because the i386 had broken dependencies on neko. + + -- Jens Peter Secher Sat, 14 Nov 2009 11:29:58 +0100 + +haxe (1:2.4-2) unstable; urgency=low + + * Reinclude haxe-mode for Emacs after fixing emacs23 problem. + * Depend on neko because haxelib and haxedoc need the libraries. + * Bumped Standards-Version to 3.8.3, no change. + + -- Jens Peter Secher Tue, 08 Sep 2009 15:43:54 +0200 + +haxe (1:2.4-1) unstable; urgency=low + + * New upstream version (CVS 2009-08-01). + * Removed obsolete parts of the copyright file now that ExtLib is + not included anymore. + * Included patch for Ubuntu location of zlib, thanks to Alessio Treglia. + (Closes: #533159) + * Removed haxe-mode to get it into its own package. + (Closes: #521222) + * Included new commands in bash_completion. + * Removed obsolete Lintian overrides. + * Bumped Standards-Version to 3.8.2, no change. + + -- Jens Peter Secher Mon, 03 Aug 2009 21:29:45 +0200 + +haxe (1:2.3-1~bpo40+1) etch-backports; urgency=low + + * Backport to Lenny, adapt to old ocaml and debhelper 5. + + -- Jens Peter Secher Mon, 15 Jun 2009 21:40:08 +0200 + +haxe (1:2.3-1~bpo50+1) lenny-backports; urgency=low + + * Backport to Lenny, adapt to old camlp4. + + -- Jens Peter Secher Thu, 28 May 2009 20:06:08 +0200 + +haxe (1:2.3-1) unstable; urgency=low + + * New upstream version. + * Remove patch ocaml-3.11-compile.diff because it is included upstream. + * Bumped debhelper version to 7. + * Updated the haxe manpage. + + -- Jens Peter Secher Mon, 25 May 2009 22:05:05 +0200 + +haxe (1:2.2-2) unstable; urgency=low + + * Use ocamlfind to locate and use the libraries xml-light and extlib + which already exist in Debian as separate packages. + (Closes: #519630) + * Fixed compile error with camlp4 3.11, thanks to Stéphane Glondu. + (Closes: #519627) + * Use quilt instead of dpatch for patches, and describe how to use + quilt in Debian.source (thanks to Russ Allbery). + * Added a Vcs-Hg control filed to indicate the location of the public + repository. + * Bumped Standards-Version to 3.8.1. + + -- Jens Peter Secher Wed, 18 Mar 2009 23:09:50 +0100 + +haxe (1:2.2-1) experimental; urgency=low + + * New upstream release. + * Updated install scripts to include OCaml optimisations. + * Updated man page to include swf9 option. + * Fixed broken bash completion. + + -- Jens Peter Secher Sun, 14 Dec 2008 18:22:19 +0100 + +haxe (1:2.1-1) experimental; urgency=low + + * Fixed build failure when using byte-code version of ocaml. + (Closes: #501538) + * Synchronise with 2.1 release. + + -- Jens Peter Secher Thu, 09 Oct 2008 21:30:03 +0200 + +haxe (1:2.0.1-1) experimental; urgency=low + + * Newest CVS checkout for experimental. + * Build against neko 1.8.0. + + -- Jens Peter Secher Sun, 05 Oct 2008 11:24:49 +0200 + +haxe (1:2.0-1~bpo40+1) etch-backports; urgency=low + + * Backport to Etch, which requires dropping the dependency on camlp4 + and lowering dependency on emacs22 to emacs21. + + -- Jens Peter Secher Sun, 03 Aug 2008 14:28:20 +0200 + +haxe (1:2.0-1) unstable; urgency=low + + * New upstream release. + + -- Jens Peter Secher Thu, 31 Jul 2008 13:44:35 +0200 + +haxe (1:1.19-3) unstable; urgency=low + + * Remove bashism in script. + (Closes: #484390) + * Upgrade to Policy 3.8.0 by including a README.source explaining how to + use dpatch. + + -- Jens Peter Secher Sun, 15 Jun 2008 11:04:09 +0200 + +haxe (1:1.19-2~bpo40+1) etch-backports; urgency=low + + * Backport to Etch, which requires dropping the dependency on camlp4. + + -- Jens Peter Secher Sat, 17 May 2008 15:08:08 +0200 + +haxe (1:1.19-2) unstable; urgency=low + + * Remove bashism in script. + (Closes: #477202) + + -- Jens Peter Secher Sat, 26 Apr 2008 11:31:11 +0200 + +haxe (1:1.19-1) unstable; urgency=low + + * New upstream release. + + -- Jens Peter Secher Thu, 10 Apr 2008 21:47:44 +0200 + +haxe (1:1.18-1~bpo40+1) etch-backports; urgency=low + + * Backport to Etch, which requires dropping the dependency on camlp4. + + -- Jens Peter Secher Sat, 01 Mar 2008 12:32:55 +0100 + +haxe (1:1.18-1) unstable; urgency=low + + * New upstream release. + + -- Jens Peter Secher Tue, 26 Feb 2008 19:55:05 +0100 + +haxe (1:1.17-1~bpo40+2) etch-backports; urgency=low + + * Rebuild with fixed neko backport to get dependency right. + + -- Jens Peter Secher Tue, 05 Feb 2008 22:10:39 +0100 + +haxe (1:1.17-1~bpo40+1) etch-backports; urgency=low + + * Backport to Etch, which requires dropping the dependency on camlp4. + + -- Jens Peter Secher Tue, 05 Feb 2008 22:10:39 +0100 + +haxe (1:1.17-1) unstable; urgency=low + + * New upstream release. + * Added a bash completion specification. + * Bumped Standards-Version to 3.7.3. + + -- Jens Peter Secher Mon, 14 Jan 2008 23:17:46 +0100 + +haxe (1:1.16-1~bpo40+1) etch-backports; urgency=low + + * Backport to Etch, which requires dropping the dependency on camlp4. + + -- Jens Peter Secher Mon, 19 Nov 2007 21:31:56 +0100 + +haxe (1:1.16-1) unstable; urgency=low + + * New upstream release. + + -- Jens Peter Secher Wed, 07 Nov 2007 22:15:33 +0100 + +haxe (1:1.15-2) unstable; urgency=low + + * Make sure there is a Caml Preprocessor & Pretty Printer (camlp4) when + building. + (Closes: #441510) + + -- Jens Peter Secher Mon, 10 Sep 2007 23:18:51 +0200 + +haxe (1:1.15-1) unstable; urgency=low + + * New upstream release. + + -- Jens Peter Secher Wed, 29 Aug 2007 21:28:45 +0200 + +haxe (1:1.14-3) unstable; urgency=low + + * The bytecode compiler should have the same name as the native + compiler, which fixes FTBFS on S390, M68k, Arm, and MIPS. + + -- Jens Peter Secher Sun, 29 Jul 2007 15:07:57 +0200 + +haxe (1:1.14-2) unstable; urgency=low + + * Use $CURDIR everywhere in debian/rules. + (Closes: #435026) + + -- Jens Peter Secher Sun, 29 Jul 2007 01:11:06 +0200 + +haxe (1:1.14-1) unstable; urgency=low + + * New upstream release. + * Updated man pages. + * Prefer emacs22 over emacs21. + (Closes: #434918) + * Simplify install, removal, and load-path by using symlinks instead of + copying source files. + + -- Jens Peter Secher Sat, 28 Jul 2007 11:43:58 +0200 + +haxe (1:1.13-1bpo1) stable; urgency=low + + * Backport to etch (no change). + + -- Jens Peter Secher Sun, 27 May 2007 10:58:46 +0200 + +haxe (1:1.13-1) unstable; urgency=low + + * New upstream release. + * Updated man pages. + + -- Jens Peter Secher Sun, 27 May 2007 00:44:04 +0200 + +haxe (1:1.12-1) unstable; urgency=low + + * Switched to upstream version numbers. + * New version of haxe-mode.el which is now properly setup for emacsen + (but only for emacs-snapshot or emacs22, since haxe-mode depends on a + recent cc-mode). + + -- Jens Peter Secher Sun, 18 Mar 2007 15:25:36 +0100 + +haxe (20070307-1) experimental; urgency=low + + * New upstream release (~1.12). + * Updated man page accordingly. + + -- Jens Peter Secher Wed, 7 Mar 2007 00:30:04 +0100 + +haxe (20070224-1) experimental; urgency=low + + * New upstream release (~1.11) matches Neko version 1.5.3. + * New version of haxe-mode for Emacs. + + -- Jens Peter Secher Sat, 24 Feb 2007 16:10:56 +0100 + +haxe (20070106-1) experimental; urgency=low + + * New upstream release (~1.10). + * Updated manpages. + * Include haxe-mode for Emacs. + + -- Jens Peter Secher Sat, 6 Jan 2007 19:01:42 +0100 + +haxe (20061201-1) experimental; urgency=low + + * New upstream release. + * Include lintian overrides for unstripped bytecode files. + + -- Jens Peter Secher Fri, 1 Dec 2006 19:18:02 +0100 + +haxe (20061106-1bpo1) stable; urgency=low + + * Change the dependencies to backport to Sarge. + + -- Jens Peter Secher Sun, 12 Nov 2006 15:16:31 +0100 + +haxe (20061106-1) experimental; urgency=low + + * New upstream release (~1.08). + - Fixes flash6 code generation. + (Closes: #396141) + * Use neko to build haxelib and haxedoc executables, both of which + searches for the libneko.so by use of -rpath in /usr/lib/neko since we + do not want this private library to end up in /usr/lib. + + -- Jens Peter Secher Mon, 6 Nov 2006 18:21:09 +0100 + +haxe (20060912-2) unstable; urgency=low + + * Fixed build failure on architectures without a native ocaml compiler. + * Added Tag field to control file to test Enrico Zini's + debtags-updatecontrol. + * Changed description to match that on haxe.org . + + -- Jens Peter Secher Wed, 13 Sep 2006 09:38:12 +0200 + +haxe (20060912-1) unstable; urgency=low + + * New upstream release (1.07). + + -- Jens Peter Secher Tue, 12 Sep 2006 21:39:22 +0200 + +haxe (20060715-2) unstable; urgency=low + + * Fixed build failure on architectures without a native ocaml compiler, + thanks to Samuel Mimram and Paul Wise. + (Closes: #378373) + * Fixed misspelling in package description. + (Closes: #378631) + * Updated manual page. + + -- Jens Peter Secher Sat, 22 Jul 2006 10:39:48 +0200 + +haxe (20060715-1) unstable; urgency=low + + * New upstream release. + + -- Jens Peter Secher Sat, 15 Jul 2006 11:13:35 +0200 + +haxe (20060606-2) experimental; urgency=low + + * Avoid splitting off the arch-independent library files into a separate + package. + + -- Jens Peter Secher Wed, 7 Jun 2006 23:05:35 +0200 + +haxe (20060606-1) experimental; urgency=low + + * Included all copyright holders from the OCaml Extended standard + Library (ExtLib). + * Bumped Standards-Version to 3.7.2. + + -- Jens Peter Secher Tue, 6 Jun 2006 21:50:56 +0200 + +haxe (1.0-1) experimental; urgency=low + + * Inital package. + (Closes: #365425). + + -- Jens Peter Secher Sun, 30 Apr 2006 00:17:24 +0200 diff -Nru haxe-4.2.2/debian/watch haxe-4.2.3/debian/watch --- haxe-4.2.2/debian/watch 2021-06-07 08:53:59.000000000 +0000 +++ haxe-4.2.3/debian/watch 2021-07-03 09:54:06.000000000 +0000 @@ -1,3 +1,3 @@ -version=3 -opts="uversionmangle=s/-/~/g"\ - https://github.com/HaxeFoundation/haxe/releases/latest .*/archive/refs/tags/(\d\S*)\.tar\.gz +version=3 +opts="uversionmangle=s/-/~/g"\ + https://github.com/HaxeFoundation/haxe/releases/latest .*/archive/refs/tags/(\d\S*)\.tar\.gz diff -Nru haxe-4.2.2/extra/CHANGES.txt haxe-4.2.3/extra/CHANGES.txt --- haxe-4.2.2/extra/CHANGES.txt 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/extra/CHANGES.txt 2021-07-03 09:55:11.000000000 +0000 @@ -1,8 +1,23 @@ +2021-01-01 4.2.3: + + General improvements: + + all : analyzer optimizations + macro : support maps in `haxe.macro.Context.makeExpr` (#10259) + js : added `-D js-global=globalThis` to customize global object name (#10282) + php : added externs for `quoted_printable_decode`, `quoted_printable_encode`, `Attribute`, `NumberFormat`, `IntlCalendar` and other `Intl*` classes + + Bugfixes: + + all : fixed compiler crash on some unreachable code blocks (#10261) + jvm : fixed `@:native` (#10280) + jvm : fixed `--xml` generation (#10279) + 2021-05-14 4.2.2: Bugfixes: - all : fixed piping stdin/stdout in `--cmd` (#4660, #6726) + all : fixed piping stdin/stdout in `--cmd` (#4669, #6726) all : fixed rest args typing for overloaded functions (#10143) all : fixed using `var` fields as static extensions (#10144) all : fixed completion for a type in `expr is Type` (#10167) diff -Nru haxe-4.2.2/extra/github-actions/build-linux.yml haxe-4.2.3/extra/github-actions/build-linux.yml --- haxe-4.2.2/extra/github-actions/build-linux.yml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/extra/github-actions/build-linux.yml 2021-07-03 09:55:11.000000000 +0000 @@ -12,7 +12,7 @@ opam init # --disable-sandboxing opam update opam pin add haxe . --no-action - opam install haxe --deps-only + opam install haxe --deps-only --assume-depexts opam list ocamlopt -v diff -Nru haxe-4.2.2/.github/workflows/main.yml haxe-4.2.3/.github/workflows/main.yml --- haxe-4.2.2/.github/workflows/main.yml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/.github/workflows/main.yml 2021-07-03 09:55:11.000000000 +0000 @@ -35,7 +35,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -45,7 +45,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -55,10 +55,10 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + - name: choco install nsis uses: nick-invision/retry@v1 with: @@ -71,7 +71,7 @@ - name: Prepend Chocolatey path shell: pwsh run: Write-Host "::add-path::C:\ProgramData\chocolatey\bin" - + - name: Install OCaml and OCaml libraries shell: pwsh run: | @@ -94,16 +94,16 @@ & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'opam install haxe --deps-only --yes 2>&1') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'opam list') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'ocamlopt -v') - + - name: Expose mingw dll files shell: pwsh run: Write-Host "::add-path::${env:CYG_ROOT}/usr/$($env:MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin" - + - name: Set ADD_REVISION=1 for non-release if: ${{ !startsWith(github.ref, 'refs/tags/') }} shell: pwsh run: echo "ADD_REVISION=1" >> $Env:GITHUB_ENV - + - name: Build Haxe shell: pwsh run: | @@ -115,13 +115,13 @@ & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && ls ./out') - + - name: Upload artifact uses: actions/upload-artifact@v1.0.0 with: name: win${{env.ARCH}}Binaries path: out - + windows-build: runs-on: windows-latest @@ -143,7 +143,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -153,7 +153,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -163,10 +163,10 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + - name: choco install nsis uses: nick-invision/retry@v1 with: @@ -179,7 +179,7 @@ - name: Prepend Chocolatey path shell: pwsh run: Write-Host "::add-path::C:\ProgramData\chocolatey\bin" - + - name: Install OCaml and OCaml libraries shell: pwsh run: | @@ -202,16 +202,16 @@ & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'opam install haxe --deps-only --yes 2>&1') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'opam list') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'ocamlopt -v') - + - name: Expose mingw dll files shell: pwsh run: Write-Host "::add-path::${env:CYG_ROOT}/usr/$($env:MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin" - + - name: Set ADD_REVISION=1 for non-release if: ${{ !startsWith(github.ref, 'refs/tags/') }} shell: pwsh run: echo "ADD_REVISION=1" >> $Env:GITHUB_ENV - + - name: Build Haxe shell: pwsh run: | @@ -223,13 +223,13 @@ & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe') & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && ls ./out') - + - name: Upload artifact uses: actions/upload-artifact@v1.0.0 with: name: win${{env.ARCH}}Binaries path: out - + linux-build: runs-on: ubuntu-18.04 @@ -245,7 +245,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -255,7 +255,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -265,10 +265,10 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + - name: Install dependencies run: | set -ex @@ -276,21 +276,21 @@ sudo add-apt-repository ppa:haxe/ocaml -y # provides newer version of mbedtls sudo apt-get update -qqy sudo apt-get install -qqy ocaml-nox camlp5 opam libpcre3-dev zlib1g-dev libgtk2.0-dev libmbedtls-dev ninja-build libstring-shellquote-perl - + - name: Install OCaml libraries run: | set -ex opam init # --disable-sandboxing opam update opam pin add haxe . --no-action - opam install haxe --deps-only + opam install haxe --deps-only --assume-depexts opam list ocamlopt -v - + - name: Set ADD_REVISION=1 for non-release if: ${{ !startsWith(github.ref, 'refs/tags/') }} run: echo "ADD_REVISION=1" >> $GITHUB_ENV - + - name: Build Haxe run: | set -ex @@ -301,13 +301,13 @@ ls -l out ldd -v ./haxe ldd -v ./haxelib - + # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions - name: Extract branch name id: extract_branch shell: bash run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" - + - name: Build xmldoc run: | set -ex @@ -318,19 +318,19 @@ "branch": "${{ steps.extract_branch.outputs.branch }}" } EOL - + - name: Upload xmldoc artifact uses: actions/upload-artifact@v1.0.0 with: name: xmldoc path: extra/doc - + - name: Upload artifact uses: actions/upload-artifact@v1.0.0 with: name: linuxBinaries path: out - + mac-build: runs-on: macos-latest @@ -347,7 +347,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -357,7 +357,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -367,10 +367,10 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + - name: Install dependencies env: ZLIB_VERSION: 1.2.11 @@ -399,8 +399,8 @@ cd pcre-$PCRE_VERSION ./configure --enable-utf8 --enable-pcre8 --enable-pcre16 --enable-pcre32 --enable-unicode-properties --enable-pcregrep-libz --enable-pcregrep-libbz2 --enable-jit make && make install - - + + - name: Install OCaml libraries run: | set -ex @@ -414,11 +414,11 @@ opam install haxe --deps-only opam list ocamlopt -v - + - name: Set ADD_REVISION=1 for non-release if: ${{ !startsWith(github.ref, 'refs/tags/') }} run: echo "ADD_REVISION=1" >> $GITHUB_ENV - + - name: Build Haxe run: | set -ex @@ -429,13 +429,13 @@ ls -l out otool -L ./haxe otool -L ./haxelib - + - name: Upload artifact uses: actions/upload-artifact@v1.0.0 with: name: macBinaries path: out - + windows64-test: needs: windows64-build @@ -463,7 +463,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -473,7 +473,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -483,17 +483,17 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + # - name: Quick test # shell: pwsh # run: | # $DOWNLOADDIR="./win$($env:ARCH)Binaries" # new-item -Name $DOWNLOADDIR -ItemType directory # Invoke-WebRequest https://build.haxe.org/builds/haxe/$env:PLATFORM/haxe_latest.zip -OutFile $DOWNLOADDIR/haxe_bin.zip - + - name: Setup Haxe shell: pwsh run: | @@ -503,11 +503,11 @@ $HAXEPATH = Get-ChildItem $DOWNLOADDIR/haxe_*_* -Directory Write-Host "::add-path::$HAXEPATH" Write-Host "::set-env name=HAXELIB_ROOT::$HAXEPATH\lib" - + - name: Print Haxe version shell: pwsh run: haxe -version - + - name: "Make Python 3 be available as python3 in the cmdline" shell: pwsh run: | @@ -516,7 +516,7 @@ $py3path = $pypath.replace("python.exe","python3.exe") cmd /c mklink $py3path $pypath python3 -V - + - name: Install hererocks if: matrix.target == 'lua' shell: cmd @@ -524,18 +524,18 @@ pip install hererocks hererocks lua53 -l5.3 -rlatest call lua53/bin/activate - + - name: Setup haxelib shell: pwsh run: | mkdir "$env:HAXELIB_ROOT" haxelib setup "$env:HAXELIB_ROOT" - + - name: Test shell: pwsh run: haxe RunCi.hxml working-directory: ${{github.workspace}}/tests - + windows-test: needs: windows-build @@ -564,7 +564,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -574,7 +574,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -584,17 +584,17 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + # - name: Quick test # shell: pwsh # run: | # $DOWNLOADDIR="./win$($env:ARCH)Binaries" # new-item -Name $DOWNLOADDIR -ItemType directory # Invoke-WebRequest https://build.haxe.org/builds/haxe/$env:PLATFORM/haxe_latest.zip -OutFile $DOWNLOADDIR/haxe_bin.zip - + - name: Setup Haxe shell: pwsh run: | @@ -604,11 +604,11 @@ $HAXEPATH = Get-ChildItem $DOWNLOADDIR/haxe_*_* -Directory Write-Host "::add-path::$HAXEPATH" Write-Host "::set-env name=HAXELIB_ROOT::$HAXEPATH\lib" - + - name: Print Haxe version shell: pwsh run: haxe -version - + - name: "Make Python 3 be available as python3 in the cmdline" shell: pwsh run: | @@ -617,7 +617,7 @@ $py3path = $pypath.replace("python.exe","python3.exe") cmd /c mklink $py3path $pypath python3 -V - + - name: Install hererocks if: matrix.target == 'lua' shell: cmd @@ -625,18 +625,18 @@ pip install hererocks hererocks lua53 -l5.3 -rlatest call lua53/bin/activate - + - name: Setup haxelib shell: pwsh run: | mkdir "$env:HAXELIB_ROOT" haxelib setup "$env:HAXELIB_ROOT" - + - name: Test shell: pwsh run: haxe RunCi.hxml working-directory: ${{github.workspace}}/tests - + linux-test: needs: linux-build @@ -674,7 +674,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -684,7 +684,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -694,17 +694,17 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + - name: Setup Haxe run: | # mkdir ./linuxBinaries # curl -sSL https://build.haxe.org/builds/haxe/linux64/haxe_latest.tar.gz -o ./linuxBinaries/haxe_bin.tar.gz - + sudo apt install -qqy libmbedtls-dev - + set -ex tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1 sudo mkdir -p /usr/local/bin/ @@ -712,39 +712,39 @@ sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std - + - name: Print Haxe version run: haxe -version - + - name: Setup haxelib run: | set -ex mkdir ~/haxelib haxelib setup ~/haxelib - + - name: Install apt packages if: matrix.APT_PACKAGES run: | set -ex sudo apt update -qqy sudo apt install -qqy ${{matrix.APT_PACKAGES}} - + # - name: Flash setup # if: matrix.target == 'flash9' # run: export DISPLAY=:99.0 - + - name: Test if: success() && !(matrix.SAUCE && matrix.SAUCE_ACCESS_KEY) run: haxe RunCi.hxml working-directory: ${{github.workspace}}/tests - + - name: Test (with SauceLabs) if: matrix.target == 'js' && success() && matrix.SAUCE && matrix.SAUCE_ACCESS_KEY run: haxe RunCi.hxml working-directory: ${{github.workspace}}/tests env: SAUCE_ACCESS_KEY: matrix.SAUCE_ACCESS_KEY - + mac-test: needs: mac-build @@ -772,7 +772,7 @@ if: ${{ !startsWith(env.PLATFORM, 'windows') }} run: | set -ex - + curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` @@ -782,7 +782,7 @@ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - + - name: Install Neko using snapshot from S3 (Windows) if: ${{ startsWith(env.PLATFORM, 'windows') }} shell: pwsh @@ -792,15 +792,15 @@ $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* echo "$NEKOPATH" >> $env:GITHUB_PATH echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - + - name: Print Neko version run: neko -version 2>&1 - + - name: Setup Haxe run: | # mkdir ./macBinaries # curl -sSL https://build.haxe.org/builds/haxe/mac/haxe_latest.tar.gz -o ./macBinaries/haxe_bin.tar.gz - + set -ex tar -xf macBinaries/*_bin.tar.gz -C macBinaries --strip-components=1 sudo mkdir -p /usr/local/bin/ @@ -808,27 +808,27 @@ sudo ln -s `pwd`/macBinaries/haxe /usr/local/bin/haxe sudo ln -s `pwd`/macBinaries/haxelib /usr/local/bin/haxelib sudo ln -s `pwd`/macBinaries/std /usr/local/share/haxe/std - + - name: Print Haxe version run: haxe -version - + - name: Setup haxelib run: | set -ex mkdir ~/haxelib haxelib setup ~/haxelib - + - name: Install homebrew packages if: matrix.BREW_PACKAGES run: brew install ${{matrix.BREW_PACKAGES}} - + - name: Test run: | # disable invalid Unicode filenames on APFS echo "" > sys/compile-fs.hxml haxe RunCi.hxml working-directory: ${{github.workspace}}/tests - + deploy: if: github.event_name != 'pull_request' diff -Nru haxe-4.2.2/opam haxe-4.2.3/opam --- haxe-4.2.2/opam 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/opam 2021-07-03 09:55:11.000000000 +0000 @@ -1,6 +1,6 @@ opam-version: "2.0" name: "haxe" -version: "4.2.2" +version: "4.2.3" synopsis: "Multi-target universal programming language" description: """ Haxe is an open source toolkit based on a modern, diff -Nru haxe-4.2.2/src/codegen/javaModern.ml haxe-4.2.3/src/codegen/javaModern.ml --- haxe-4.2.2/src/codegen/javaModern.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/codegen/javaModern.ml 2021-07-03 09:55:12.000000000 +0000 @@ -903,6 +903,9 @@ let known_sigs = Hashtbl.create 0 in let should_generate jf = not (AccessFlags.has_flag jf.jf_flags MPrivate) + (* We might need member synthetics for proper call resolution, but we should never need static ones (issue #10279). *) + && (not (AccessFlags.has_flag jf.jf_flags MSynthetic) || not (AccessFlags.has_flag jf.jf_flags MStatic)) + && jf.jf_name <> "" in if jc.jc_path <> (["java";"lang"], "CharSequence") then begin List.iter (fun jf -> diff -Nru haxe-4.2.2/src/context/common.ml haxe-4.2.3/src/context/common.ml --- haxe-4.2.2/src/context/common.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/context/common.ml 2021-07-03 09:55:12.000000000 +0000 @@ -644,7 +644,7 @@ let m = Type.mk_mono() in let defines = PMap.add "true" "1" ( - PMap.add "source-header" ("Generated by Haxe " ^ s_version) PMap.empty + PMap.add "source_header" ("Generated by Haxe " ^ s_version) PMap.empty ) in { diff -Nru haxe-4.2.2/src/core/globals.ml haxe-4.2.3/src/core/globals.ml --- haxe-4.2.2/src/core/globals.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/core/globals.ml 2021-07-03 09:55:12.000000000 +0000 @@ -24,7 +24,7 @@ | Hl | Eval -let version = 4202 +let version = 4203 let version_major = version / 1000 let version_minor = (version mod 1000) / 100 let version_revision = (version mod 100) diff -Nru haxe-4.2.2/src/generators/genjs.ml haxe-4.2.3/src/generators/genjs.ml --- haxe-4.2.2/src/generators/genjs.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/generators/genjs.ml 2021-07-03 09:55:12.000000000 +0000 @@ -1889,19 +1889,24 @@ | _ -> () ) include_files; - let var_console = ( - "console", - "typeof console != \"undefined\" ? console : {log:function(){}}" - ) in + let defined_global_value = Common.defined_value_safe com Define.JsGlobal in + + let defined_global = defined_global_value <> "" in + + let rec typeof_join = function + | x :: [] -> x + | x :: l -> "typeof " ^ x ^ " != \"undefined\" ? " ^ x ^ " : " ^ (typeof_join l) + | _ -> "" + in let var_exports = ( "$hx_exports", - "typeof exports != \"undefined\" ? exports : typeof window != \"undefined\" ? window : typeof self != \"undefined\" ? self : this" + typeof_join (if defined_global then ["exports"; defined_global_value] else ["exports"; "window"; "self"; "this"]) ) in let var_global = ( "$global", - "typeof window != \"undefined\" ? window : typeof global != \"undefined\" ? global : typeof self != \"undefined\" ? self : this" + typeof_join (if defined_global then [defined_global_value] else ["window"; "global"; "self"; "this"]) ) in let closureArgs = [var_global] in @@ -1912,7 +1917,7 @@ in (* Provide console for environments that may not have it. *) let closureArgs = if ctx.es_version < 5 then - var_console :: closureArgs + ("console", typeof_join ["console"; "{log:function(){}}"]) :: closureArgs else closureArgs in @@ -2067,7 +2072,7 @@ | Some e -> gen_expr ctx e; newline ctx); if ctx.js_modern then begin let closureArgs = - if has_feature ctx "js.Lib.global" then + if has_feature ctx "js.Lib.global" || defined_global then closureArgs else (* no need for `typeof window != "undefined" ? window : typeof global != "undefined" ? <...>` *) diff -Nru haxe-4.2.2/src/generators/genjvm.ml haxe-4.2.3/src/generators/genjvm.ml --- haxe-4.2.2/src/generators/genjvm.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/generators/genjvm.ml 2021-07-03 09:55:12.000000000 +0000 @@ -2796,10 +2796,7 @@ List.exists (fun mt -> snd (t_infos mt).mt_path = snd m.m_path) m.m_types let check_path mt = - (* don't rewrite if there's an explicit @:native *) - if Meta.has Meta.Native mt.mt_meta then - () - else if mt.mt_private && has_primary_type mt.mt_module then begin + if mt.mt_private && has_primary_type mt.mt_module && not (Meta.has Meta.Native mt.mt_meta) then begin let m = mt.mt_module in let pack = match fst m.m_path with | [] -> ["haxe";"root"] diff -Nru haxe-4.2.2/src/macro/eval/evalMain.ml haxe-4.2.3/src/macro/eval/evalMain.ml --- haxe-4.2.2/src/macro/eval/evalMain.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/macro/eval/evalMain.ml 2021-07-03 09:55:12.000000000 +0000 @@ -431,6 +431,10 @@ in make_path mt in + let make_map_entry e_key v = + let e_value = value_to_expr v p in + (EBinop(OpArrow,e_key,e_value),p) + in match vresolve v with | VNull -> (EConst (Ident "null"),p) | VTrue -> (EConst (Ident "true"),p) @@ -464,6 +468,24 @@ let args = List.map (fun v -> value_to_expr v p) (Array.to_list e.eargs) in (ECall (epath, args), p) end + | VInstance {ikind = IIntMap m} -> + let el = IntHashtbl.fold (fun k v acc -> + let e_key = (EConst (Int (string_of_int k)),p) in + (make_map_entry e_key v) :: acc + ) m [] in + (EArrayDecl el,p) + | VInstance {ikind = IStringMap m} -> + let el = StringHashtbl.fold (fun k (_,v) acc -> + let e_key = (EConst (String(k,SDoubleQuotes)),p) in + (make_map_entry e_key v) :: acc + ) m [] in + (EArrayDecl el,p) + | VInstance {ikind = IObjectMap m} -> + let el = Hashtbl.fold (fun k v acc -> + let e_key = value_to_expr k p in + (make_map_entry e_key v) :: acc + ) m [] in + (EArrayDecl el,p) | _ -> exc_string ("Cannot convert " ^ (value_string v) ^ " to expr") let encode_obj = encode_obj_s diff -Nru haxe-4.2.2/src/optimization/analyzer.ml haxe-4.2.3/src/optimization/analyzer.ml --- haxe-4.2.2/src/optimization/analyzer.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/optimization/analyzer.ml 2021-07-03 09:55:12.000000000 +0000 @@ -126,13 +126,13 @@ else match e.eexpr with | TLocal v -> let v' = local ctx e v edge.cfg_from in - add_ssa_edge ctx.graph v' bb true i; + add_ssa_edge ctx.graph v' bb (LUPhi i); {e with eexpr = TLocal v'} | _ -> die "" __LOC__ ) el edge.cfg_to.bb_incoming in let ephi = {ecall with eexpr = TCall(ephi,el)} in - set_var_value ctx.graph v0 bb true i; + set_var_value ctx.graph v0 bb (LUPhi i); {e with eexpr = TBinop(OpAssign,e1,ephi)} | _ -> Type.map_expr (loop i) e @@ -140,7 +140,7 @@ dynarray_mapi loop bb.bb_phi let rec rename_in_block ctx bb = - let write_var v is_phi i = + let write_var v luk = update_reaching_def ctx v bb; let v' = alloc_var v.v_kind v.v_name v.v_type v.v_pos in declare_var ctx.graph v' bb; @@ -149,30 +149,31 @@ add_var_def ctx.graph bb v'; set_reaching_def ctx.graph v' (get_reaching_def ctx.graph v); set_reaching_def ctx.graph v (Some v'); - set_var_value ctx.graph v' bb is_phi i; + set_var_value ctx.graph v' bb luk; add_var_origin ctx.graph v' v; v' in - let rec loop is_phi i e = match e.eexpr with + let rec loop luk e = match e.eexpr with | TLocal v -> let v' = local ctx e v bb in - add_ssa_edge ctx.graph v' bb is_phi i; + add_ssa_edge ctx.graph v' bb luk; {e with eexpr = TLocal v'} | TVar(v,Some e1) -> - let e1 = (loop is_phi i) e1 in - let v' = write_var v is_phi i in + let e1 = (loop luk) e1 in + let v' = write_var v luk in {e with eexpr = TVar(v',Some e1)} | TBinop(OpAssign,({eexpr = TLocal v} as e1),e2) -> - let e2 = (loop is_phi i) e2 in - let v' = write_var v is_phi i in + let e2 = (loop luk) e2 in + let v' = write_var v luk in {e with eexpr = TBinop(OpAssign,{e1 with eexpr = TLocal v'},e2)}; | TCall({eexpr = TConst (TString "phi")},_) -> e | _ -> - Type.map_expr (loop is_phi i) e + Type.map_expr (loop luk) e in - dynarray_mapi (loop true) bb.bb_phi; - dynarray_mapi (loop false) bb.bb_el; + dynarray_mapi (fun i e -> loop (LUPhi i) e) bb.bb_phi; + dynarray_mapi (fun i e -> loop (LUEl i) e) bb.bb_el; + bb.bb_terminator <- BasicBlock.terminator_map (loop LUTerm) bb.bb_terminator; List.iter (update_phi ctx) bb.bb_outgoing; List.iter (rename_in_block ctx) bb.bb_dominated @@ -253,13 +254,13 @@ if List.exists (fun edge -> has_flag edge M.flag) bb.bb_incoming then set_lattice_cell v (M.transfer ctx bb e) in - let visit_expression bb e = + let visit_expression bb cond_branch e = match e.eexpr with | TBinop(OpAssign,{eexpr = TLocal v},e2) | TVar(v,Some e2) -> visit_assignment bb v e2; false - | TMeta((Meta.Custom ":cond-branch",_,_),e1) when M.conditional -> - let e1 = M.transfer ctx bb e1 in + | _ when M.conditional && cond_branch -> + let e1 = M.transfer ctx bb e in let edges = if e1 == M.bottom || e1 == M.top then bb.bb_outgoing else begin @@ -293,8 +294,17 @@ in let visit_expressions bb = let b = DynArray.fold_left (fun b e -> - visit_expression bb e || b + visit_expression bb false e || b ) false bb.bb_el in + let b = match bb.bb_terminator with + | TermCondBranch e1 -> + visit_expression bb true e1 || b + | TermReturnValue(e1,_) + | TermThrow(e1,_) -> + visit_expression bb false e1 + | _ -> + b + in if not b then List.iter add_cfg_edge bb.bb_outgoing in let visit_phis bb = @@ -320,10 +330,10 @@ end end; loop(); - | [],((bb,is_phi,i) :: edges) -> + | [],((bb,luk) :: edges) -> ssa_work_list := edges; - let e = get_texpr bb is_phi i in - ignore(visit_expression bb e); + let e = get_texpr bb luk in + ignore(visit_expression bb (match luk with LUTerm -> true | _ -> false) e); loop() | [],[] -> () @@ -510,7 +520,8 @@ in Graph.iter_dom_tree ctx.graph (fun bb -> if not (List.exists (fun edge -> has_flag edge FlagExecutable) bb.bb_incoming) then bb.bb_dominator <- ctx.graph.Graph.g_unreachable; - dynarray_map commit bb.bb_el + dynarray_map commit bb.bb_el; + bb.bb_terminator <- terminator_map commit bb.bb_terminator; ); end) @@ -606,7 +617,8 @@ Type.map_expr (commit bb) e in Graph.iter_dom_tree ctx.graph (fun bb -> - dynarray_map (commit bb) bb.bb_el + dynarray_map (commit bb) bb.bb_el; + bb.bb_terminator <- terminator_map (commit bb) bb.bb_terminator; ); end) @@ -677,6 +689,7 @@ bb_marked := bb :: !bb_marked; DynArray.iter expr bb.bb_el; DynArray.iter expr bb.bb_phi; + terminator_iter expr bb.bb_terminator; List.iter (fun edge -> if not (has_flag edge FlagDce) then begin edge.cfg_flags <- FlagDce :: edge.cfg_flags; @@ -698,7 +711,8 @@ Type.map_expr sweep e in List.iter (fun bb -> - dynarray_map sweep bb.bb_el + dynarray_map sweep bb.bb_el; + bb.bb_terminator <- terminator_map sweep bb.bb_terminator; ) !bb_marked; end @@ -767,7 +781,7 @@ edge bb_then "then"; edge bb_else "else"; edge bb_next "next"; - | SEWhile(bb_head,bb_body,bb_next) -> + | SEWhile(bb_head,bb_body,bb_next,_) -> edge bb_head "loop-head"; edge bb_body "loop-body"; edge bb_next "next"; @@ -792,14 +806,14 @@ let generate_cfg_ssa ch g = Printf.fprintf ch "\tnode [shape=plaintext];\n"; - let expr_name b i = Printf.sprintf "e%s%i" (if b then "p" else "") i in + let expr_name luk = Printf.sprintf "e%s" (match luk with | LUPhi i -> Printf.sprintf "p%i" i | LUEl i -> Printf.sprintf "%i" i | LUTerm -> "t") in List.iter (fun bb -> Printf.fprintf ch "n%i[label=<\n\t\n" bb.bb_id bb.bb_id (BasicBlock.s_block_kind bb.bb_kind); - let s_expr b i e = - Printf.fprintf ch "\t\n" (expr_name b i) (s_escape (htmlescape (s_expr_pretty e))) + let s_expr luk e = + Printf.fprintf ch "\t\n" (expr_name luk) (s_escape (htmlescape (s_expr_pretty e))) in - DynArray.iteri (s_expr true) bb.bb_phi; - DynArray.iteri (s_expr false) bb.bb_el; + DynArray.iteri (fun i e -> s_expr (LUPhi i) e) bb.bb_phi; + DynArray.iteri (fun i e -> s_expr (LUEl i) e) bb.bb_el; Printf.fprintf ch "\t\n
(%i) %s
%s
%s
>];\n"; ) g.g_nodes; Graph.iter_edges g (fun edge -> @@ -807,11 +821,11 @@ ); DynArray.iter (fun vi -> begin try - let (bb,is_phi,i) = match vi.vi_value with None -> raise Not_found | Some i -> i in - let n1 = Printf.sprintf "n%i:%s" bb.bb_id (expr_name is_phi i) in - List.iter (fun (bb',is_phi',i') -> + let (bb,luk) = match vi.vi_value with None -> raise Not_found | Some i -> i in + let n1 = Printf.sprintf "n%i:%s" bb.bb_id (expr_name luk) in + List.iter (fun (bb',luk') -> if bb != bb' then begin (* intra-node edges look stupid in dot *) - let n2 = Printf.sprintf "n%i:%s" bb'.bb_id (expr_name is_phi' i') in + let n2 = Printf.sprintf "n%i:%s" bb'.bb_id (expr_name luk') in Printf.fprintf ch "%s -> %s[color=lightblue,constraint=false];\n" n1 n2; end ) vi.vi_ssa_edges; @@ -871,18 +885,18 @@ f(); let ch,f = start_graph "-ssa-edges.dot" in let nodes = ref PMap.empty in - let node_name bb is_phi i = Printf.sprintf "e%i_%b_%i" bb.bb_id is_phi i in - let node_name2 bb is_phi i = - let n = node_name bb is_phi i in + let node_name bb luk = Printf.sprintf "e%i_%s" bb.bb_id (match luk with LUPhi i -> Printf.sprintf "phi_%i" i | LUEl i -> Printf.sprintf "el%i" i | LUTerm -> "term") in + let node_name2 bb luk = + let n = node_name bb luk in nodes := PMap.add n true !nodes; n in DynArray.iter (fun vi -> begin try - let (bb,is_phi,i) = match vi.vi_value with None -> raise Not_found | Some i -> i in - let n1 = node_name2 bb is_phi i in - List.iter (fun (bb',is_phi',i') -> - let n2 = node_name2 bb' is_phi' i' in + let (bb,luk) = match vi.vi_value with None -> raise Not_found | Some i -> i in + let n1 = node_name2 bb luk in + List.iter (fun (bb',luk') -> + let n2 = node_name2 bb' luk' in Printf.fprintf ch "%s -> %s;\n" n1 n2 ) vi.vi_ssa_edges with Not_found -> @@ -890,15 +904,15 @@ end ) g.g_var_infos; List.iter (fun bb -> - let f is_phi acc i e = - let n = node_name bb is_phi i in - (i + 1),if PMap.mem n !nodes then + let f luk acc e = + let n = node_name bb luk in + if PMap.mem n !nodes then (n,s_expr_pretty e) :: acc else acc in - let _,active_nodes = DynArray.fold_left (fun (i,acc) -> f true acc i) (0,[]) bb.bb_phi in - let _,active_nodes = DynArray.fold_left (fun (i,acc) -> f false acc i) (0,active_nodes) bb.bb_el in + let _,active_nodes = DynArray.fold_left (fun (i,acc) e -> (i + 1),f (LUPhi i) acc e) (0,[]) bb.bb_phi in + let _,active_nodes = DynArray.fold_left (fun (i,acc) e -> (i + 1),f (LUEl i) acc e) (0,active_nodes) bb.bb_el in if active_nodes <> [] then begin Printf.fprintf ch "subgraph cluster_%i {\n" bb.bb_id; Printf.fprintf ch "label=%i;\n" bb.bb_id; diff -Nru haxe-4.2.2/src/optimization/analyzerTexprTransformer.ml haxe-4.2.3/src/optimization/analyzerTexprTransformer.ml --- haxe-4.2.2/src/optimization/analyzerTexprTransformer.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/optimization/analyzerTexprTransformer.ml 2021-07-03 09:55:12.000000000 +0000 @@ -46,10 +46,6 @@ let bb_exit = create_node BKFunctionEnd tf.tf_expr.etype tf.tf_expr.epos in add_function g tf t p bb_root; add_cfg_edge bb bb_root CFGFunction; - let make_block_meta b = - let e = mk (TConst (TInt (Int32.of_int b.bb_id))) ctx.com.basic.tint b.bb_pos in - wrap_meta ":block" e - in let bb_breaks = ref [] in let bb_continue = ref None in let b_try_stack = ref [] in @@ -76,9 +72,9 @@ b_try_stack := List.tl !b_try_stack ) in - let add_terminator bb e = - add_texpr bb e; - close_node g bb; + let add_terminator bb term = + bb.bb_terminator <- term; + close_node bb; g.g_unreachable in let check_unbound_call s el = @@ -170,7 +166,7 @@ let bb_next = create_node BKNormal bb.bb_type bb.bb_pos in add_cfg_edge bb bb_next CFGGoto; set_syntax_edge bb (SEMerge bb_next); - close_node g bb; + close_node bb; add_cfg_edge bb_func_end bb_next CFGGoto; bb_next,ec | TConst _ | TTypeExpr _ -> @@ -297,8 +293,8 @@ and block_element_plus bb (e,efinal) f = let bb = block_element bb e in let bb = match efinal with - | None -> bb - | Some e -> block_element bb (f e) + | Some e when bb != g.g_unreachable -> block_element bb (f e) + | _ -> bb in bb and block_element_value bb e f = @@ -371,17 +367,17 @@ | TBlock el -> let bb_sub = create_node BKSub e.etype e.epos in add_cfg_edge bb bb_sub CFGGoto; - close_node g bb; + close_node bb; let bb_sub_next = block_el bb_sub el in if bb_sub_next != g.g_unreachable then begin let bb_next = create_node BKNormal bb.bb_type bb.bb_pos in set_syntax_edge bb (SESubBlock(bb_sub,bb_next)); add_cfg_edge bb_sub_next bb_next CFGGoto; - close_node g bb_sub_next; + close_node bb_sub_next; bb_next; end else begin set_syntax_edge bb (SEMerge bb_sub); - close_node g bb_sub_next; + close_node bb_sub_next; bb_sub_next end | TIf(e1,e2,None) -> @@ -390,15 +386,15 @@ bb else begin let bb_then = create_node BKConditional e2.etype e2.epos in - add_texpr bb (wrap_meta ":cond-branch" e1); + bb.bb_terminator <- TermCondBranch e1; add_cfg_edge bb bb_then (CFGCondBranch (mk (TConst (TBool true)) ctx.com.basic.tbool e2.epos)); let bb_then_next = block bb_then e2 in let bb_next = create_node BKNormal bb.bb_type bb.bb_pos in set_syntax_edge bb (SEIfThen(bb_then,bb_next,e.epos)); add_cfg_edge bb bb_next CFGCondElse; - close_node g bb; + close_node bb; add_cfg_edge bb_then_next bb_next CFGGoto; - close_node g bb_then_next; + close_node bb_then_next; bb_next end | TIf(e1,e2,Some e3) -> @@ -408,10 +404,10 @@ else begin let bb_then = create_node BKConditional e2.etype e2.epos in let bb_else = create_node BKConditional e3.etype e3.epos in - add_texpr bb (wrap_meta ":cond-branch" e1); + bb.bb_terminator <- TermCondBranch e1; add_cfg_edge bb bb_then (CFGCondBranch (mk (TConst (TBool true)) ctx.com.basic.tbool e2.epos)); add_cfg_edge bb bb_else CFGCondElse; - close_node g bb; + close_node bb; let bb_then_next = block bb_then e2 in let bb_else_next = block bb_else e3 in if bb_then_next == g.g_unreachable && bb_else_next == g.g_unreachable then begin @@ -422,22 +418,22 @@ set_syntax_edge bb (SEIfThenElse(bb_then,bb_else,bb_next,e.etype,e.epos)); add_cfg_edge bb_then_next bb_next CFGGoto; add_cfg_edge bb_else_next bb_next CFGGoto; - close_node g bb_then_next; - close_node g bb_else_next; + close_node bb_then_next; + close_node bb_else_next; bb_next end end | TSwitch(e1,cases,edef) -> let is_exhaustive = edef <> None || is_exhaustive e1 in let bb,e1 = bind_to_temp bb false e1 in - add_texpr bb (wrap_meta ":cond-branch" e1); + bb.bb_terminator <- TermCondBranch e1; let reachable = ref [] in let make_case e = let bb_case = create_node BKConditional e.etype e.epos in let bb_case_next = block bb_case e in if bb_case_next != g.g_unreachable then reachable := bb_case_next :: !reachable; - close_node g bb_case_next; + close_node bb_case_next; bb_case in let cases = List.map (fun (el,e) -> @@ -455,21 +451,21 @@ in if is_exhaustive && !reachable = [] then begin set_syntax_edge bb (SESwitch(cases,def,g.g_unreachable,e.epos)); - close_node g bb; + close_node bb; g.g_unreachable; end else begin let bb_next = create_node BKNormal bb.bb_type bb.bb_pos in if not is_exhaustive then add_cfg_edge bb bb_next CFGGoto; List.iter (fun bb -> add_cfg_edge bb bb_next CFGGoto) !reachable; set_syntax_edge bb (SESwitch(cases,def,bb_next,e.epos)); - close_node g bb; + close_node bb; bb_next end | TWhile(e1,e2,NormalWhile) -> let bb_loop_pre = create_node BKNormal e1.etype e1.epos in add_cfg_edge bb bb_loop_pre CFGGoto; set_syntax_edge bb (SEMerge bb_loop_pre); - close_node g bb; + close_node bb; let bb_loop_head = create_node BKLoopHead e1.etype e1.epos in add_cfg_edge bb_loop_pre bb_loop_head CFGGoto; let close = begin_loop bb bb_loop_head in @@ -485,13 +481,13 @@ create_node BKNormal bb.bb_type bb.bb_pos in List.iter (fun bb -> add_cfg_edge bb bb_next CFGGoto) bb_breaks; - set_syntax_edge bb_loop_pre (SEWhile(bb_loop_head,bb_loop_body,bb_next)); - close_node g bb_loop_pre; - add_texpr bb_loop_pre {e with eexpr = TWhile(e1,make_block_meta bb_loop_body,NormalWhile)}; + set_syntax_edge bb_loop_pre (SEWhile(bb_loop_head,bb_loop_body,bb_next,e.epos)); + close_node bb_loop_pre; + bb_loop_pre.bb_terminator <- TermCondBranch e1; if bb_loop_body_next != g.g_unreachable then add_cfg_edge bb_loop_body_next bb_loop_head CFGGoto; add_cfg_edge bb_loop_head bb_loop_body CFGGoto; - close_node g bb_loop_body_next; - close_node g bb_loop_head; + close_node bb_loop_body_next; + close_node bb_loop_head; bb_next; | TTry(e1,catches) -> let bb_try = create_node BKNormal e1.etype e1.epos in @@ -513,19 +509,19 @@ let bb_next = if !is_reachable then create_node BKNormal bb.bb_type bb.bb_pos else g.g_unreachable in let catches = List.map (fun (v,bb_catch,bb_catch_next) -> if bb_catch_next != g.g_unreachable then add_cfg_edge bb_catch_next bb_next CFGGoto; - close_node g bb_catch_next; + close_node bb_catch_next; v,bb_catch ) catches in set_syntax_edge bb (SETry(bb_try,bb_exc,catches,bb_next,e.epos)); if bb_try_next != g.g_unreachable then add_cfg_edge bb_try_next bb_next CFGGoto; - close_node g bb_try_next; - close_node g bb_exc; - close_node g bb; + close_node bb_try_next; + close_node bb_exc; + close_node bb; bb_next (* control flow *) | TReturn None -> add_cfg_edge bb bb_exit CFGGoto; - add_terminator bb e + add_terminator bb (TermReturn e.epos) | TReturn (Some e1) when ExtType.is_void (follow e1.etype) -> let bb = block_element bb e1 in block_element bb (mk (TReturn None) t_dynamic e.epos) @@ -536,17 +532,17 @@ with Exit -> let bb,e1 = value bb e1 in add_cfg_edge bb bb_exit CFGGoto; - add_terminator bb {e with eexpr = TReturn(Some e1)}; + add_terminator bb (TermReturnValue(e1,e.epos)) end | TBreak -> bb_breaks := bb :: !bb_breaks; - add_terminator bb e + add_terminator bb (TermBreak e.epos) | TContinue -> begin match !bb_continue with | Some bb_continue -> add_cfg_edge bb bb_continue CFGGoto | _ -> die "" __LOC__ end; - add_terminator bb e + add_terminator bb (TermContinue e.epos) | TThrow e1 -> begin try let mk_throw e1 = @@ -559,7 +555,7 @@ | [] -> add_cfg_edge bb bb_exit CFGGoto | _ -> List.iter (fun bb_exc -> add_cfg_edge bb bb_exc CFGGoto) !b_try_stack; end; - add_terminator bb {e with eexpr = TThrow e1}; + add_terminator bb (TermThrow(e1,e.epos)) end (* side_effects *) | TCall({eexpr = TIdent s},el) when is_really_unbound s -> @@ -643,7 +639,7 @@ add_cfg_edge bb bb' CFGGoto; List.iter (fun bb_exc -> add_cfg_edge bb bb_exc CFGMaybeThrow) bbl; set_syntax_edge bb (SEMerge bb'); - close_node g bb; + close_node bb; block_element bb' e end in if bb == g.g_unreachable then bb else loop bb el @@ -657,53 +653,67 @@ block_el bb el in let bb_last = block bb_root tf.tf_expr in - close_node g bb_last; + close_node bb_last; add_cfg_edge bb_last bb_exit CFGGoto; (* implied return *) - close_node g bb_exit; + close_node bb_exit; bb_root,bb_exit let from_tfunction ctx tf t p = let g = ctx.graph in let bb_func,bb_exit = func ctx g.g_root tf t p in ctx.entry <- bb_func; - close_node g g.g_root; + close_node g.g_root; g.g_exit <- bb_exit +let terminator_to_texpr_maybe = function + | TermReturn p -> Some (mk (TReturn None) t_dynamic p) + | TermBreak p -> Some (mk TBreak t_dynamic p) + | TermContinue p -> Some (mk TContinue t_dynamic p) + | TermReturnValue(e1,p) -> Some (mk (TReturn (Some e1)) t_dynamic p) + | TermThrow(e1,p) -> Some (mk (TThrow e1) t_dynamic p) + | TermCondBranch e1 -> Some e1 (* TODO: this shouldn't be here *) + | _ -> None + let rec block_to_texpr_el ctx bb = if bb.bb_dominator == ctx.graph.g_unreachable then [] else begin let block bb = block_to_texpr ctx bb in let rec loop bb se = - let el = List.rev (DynArray.to_list bb.bb_el) in - match el,se with - | el,SESubBlock(bb_sub,bb_next) -> - Some bb_next,(block bb_sub) :: el - | el,SEMerge bb_next -> - Some bb_next,el - | el,SENone -> - None,el - | {eexpr = TWhile(e1,_,flag)} as e :: el,(SEWhile(_,bb_body,bb_next)) -> - let e2 = block bb_body in - Some bb_next,{e with eexpr = TWhile(e1,e2,flag)} :: el - | el,SETry(bb_try,_,bbl,bb_next,p) -> - Some bb_next,(mk (TTry(block bb_try,List.map (fun (v,bb) -> v,block bb) bbl)) ctx.com.basic.tvoid p) :: el - | e1 :: el,se -> - let e1 = Texpr.skip e1 in + match se with + | SESubBlock(bb_sub,bb_next) -> + Some bb_next,Some (block bb_sub) + | SEMerge bb_next -> + Some bb_next,None + | SENone -> + None,terminator_to_texpr_maybe bb.bb_terminator + | SETry(bb_try,_,bbl,bb_next,p) -> + Some bb_next,Some (mk (TTry(block bb_try,List.map (fun (v,bb) -> v,block bb) bbl)) ctx.com.basic.tvoid p) + | se -> + let e1 = match bb.bb_terminator with + | TermCondBranch e1 -> e1 + | _ -> die "" __LOC__ + in let bb_next,e1_def,t,p = match se with | SEIfThen(bb_then,bb_next,p) -> Some bb_next,TIf(e1,block bb_then,None),ctx.com.basic.tvoid,p | SEIfThenElse(bb_then,bb_else,bb_next,t,p) -> Some bb_next,TIf(e1,block bb_then,Some (block bb_else)),t,p | SESwitch(bbl,bo,bb_next,p) -> Some bb_next,TSwitch(e1,List.map (fun (el,bb) -> el,block bb) bbl,Option.map block bo),ctx.com.basic.tvoid,p + | SEWhile(_,bb_body,bb_next,p) -> + let e2 = block bb_body in + Some bb_next,TWhile(e1,e2,NormalWhile),ctx.com.basic.tvoid,p | _ -> abort (Printf.sprintf "Invalid node exit: %s" (s_expr_pretty e1)) bb.bb_pos in - bb_next,(mk e1_def t p) :: el - | [],_ -> - None,[] + bb_next,Some (mk e1_def t p) + in + let bb_next,e_term = loop bb bb.bb_syntax_edge in + let el = DynArray.to_list bb.bb_el in + let el = match e_term with + | None -> el + | Some e -> el @ [e] in - let bb_next,el = loop bb bb.bb_syntax_edge in let el = match bb_next with | None -> el - | Some bb -> (block_to_texpr_el ctx bb) @ el + | Some bb -> el @ (block_to_texpr_el ctx bb) in el end @@ -711,7 +721,7 @@ and block_to_texpr ctx bb = assert(bb.bb_closed); let el = block_to_texpr_el ctx bb in - let e = mk (TBlock (List.rev el)) bb.bb_type bb.bb_pos in + let e = mk (TBlock el) bb.bb_type bb.bb_pos in e and func ctx i = diff -Nru haxe-4.2.2/src/optimization/analyzerTypes.ml haxe-4.2.3/src/optimization/analyzerTypes.ml --- haxe-4.2.2/src/optimization/analyzerTypes.ml 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src/optimization/analyzerTypes.ml 2021-07-03 09:55:12.000000000 +0000 @@ -67,11 +67,26 @@ | SEIfThenElse of t * t * t * Type.t * pos (* `if` with "then", "else" and "next" *) | SESwitch of (texpr list * t) list * t option * t * pos (* `switch` with cases, "default" and "next" *) | SETry of t * t * (tvar * t) list * t * pos (* `try` with "exc", catches and "next" *) - | SEWhile of t * t * t (* `while` with "head", "body" and "next" *) + | SEWhile of t * t * t * pos (* `while` with "head", "body" and "next" *) | SESubBlock of t * t (* "sub" with "next" *) | SEMerge of t (* Merge to same block *) | SENone (* No syntax exit *) + and suspend_call = { + efun : texpr; (* coroutine function expression *) + args : texpr list; (* call arguments without the continuation *) + pos : pos; (* call position *) + } + + and terminator_kind = + | TermNone + | TermCondBranch of texpr + | TermReturn of pos + | TermReturnValue of texpr * pos + | TermBreak of pos + | TermContinue of pos + | TermThrow of texpr * pos + and t = { bb_id : int; (* The unique ID of the block *) bb_type : Type.t; (* The block type *) @@ -81,6 +96,7 @@ (* elements *) bb_el : texpr DynArray.t; (* The block expressions *) bb_phi : texpr DynArray.t; (* SSA-phi expressions *) + mutable bb_terminator : terminator_kind; (* relations *) mutable bb_outgoing : cfg_edge list; (* Outgoing edges *) mutable bb_incoming : cfg_edge list; (* Incoming edges *) @@ -94,6 +110,11 @@ mutable bb_var_writes : tvar list; (* List of assigned variables *) } + type texpr_lookup_target = + | LUPhi of int + | LUEl of int + | LUTerm + let s_block_kind = function | BKRoot -> "BKRoot" | BKNormal -> "BKNormal" @@ -121,8 +142,21 @@ let add_texpr bb e = DynArray.add bb.bb_el e - let get_texpr bb is_phi i = - DynArray.get (if is_phi then bb.bb_phi else bb.bb_el) i + let get_texpr bb luk = match luk with + | LUPhi i -> + DynArray.get bb.bb_phi i + | LUEl i -> + DynArray.get bb.bb_el i + | LUTerm -> match bb.bb_terminator with + | TermCondBranch e1 + | TermReturnValue(e1,_) + | TermThrow(e1,_) -> + e1 + | TermNone + | TermReturn _ + | TermBreak _ + | TermContinue _ -> + die "" __LOC__ (* edges *) @@ -145,6 +179,7 @@ bb_closed = false; bb_el = DynArray.create(); bb_phi = DynArray.create(); + bb_terminator = TermNone; bb_outgoing = []; bb_incoming = []; bb_dominator = bb; @@ -160,6 +195,30 @@ let in_scope bb bb' = match bb'.bb_scopes with | [] -> abort (Printf.sprintf "Scope-less block (kind: %s)" (s_block_kind bb'.bb_kind)) bb'.bb_pos | scope :: _ -> List.mem scope bb.bb_scopes + + let terminator_map f term = match term with + | TermCondBranch e1 -> + TermCondBranch (f e1) + | TermReturnValue(e1,p) -> + TermReturnValue (f e1,p) + | TermThrow(e1,p) -> + TermThrow (f e1,p) + | TermNone + | TermReturn _ + | TermBreak _ + | TermContinue _ -> + term + + let terminator_iter f term = match term with + | TermCondBranch e1 + | TermReturnValue(e1,_) + | TermThrow(e1,_) -> + f e1 + | TermNone + | TermReturn _ + | TermBreak _ + | TermContinue _ -> + () end (* @@ -169,8 +228,8 @@ module Graph = struct open BasicBlock - type texpr_lookup = BasicBlock.t * bool * int type tfunc_info = BasicBlock.t * Type.t * pos * tfunc + type texpr_lookup = BasicBlock.t * texpr_lookup_target type var_write = BasicBlock.t list type 'a itbl = (int,'a) Hashtbl.t @@ -230,16 +289,16 @@ vi.vi_writes <- bb :: vi.vi_writes; end - let set_var_value g v bb is_phi i = - (get_var_info g v).vi_value <- Some (bb,is_phi,i) + let set_var_value g v bb luk = + (get_var_info g v).vi_value <- Some (bb,luk) let get_var_value g v = let value = (get_var_info g v).vi_value in - let bb,is_phi,i = match value with + let bb,luk = match value with | None -> raise Not_found | Some l -> l in - match (get_texpr bb is_phi i).eexpr with + match (get_texpr bb luk).eexpr with | TVar(_,Some e) | TBinop(OpAssign,_,e) -> e | _ -> die "" __LOC__ @@ -249,9 +308,9 @@ let get_var_origin g v = (get_var_info g v).vi_origin - let add_ssa_edge g v bb is_phi i = + let add_ssa_edge g v bb luk = let vi = get_var_info g v in - vi.vi_ssa_edges <- (bb,is_phi,i) :: vi.vi_ssa_edges + vi.vi_ssa_edges <- (bb,luk) :: vi.vi_ssa_edges (* nodes *) @@ -270,7 +329,7 @@ g.g_nodes <- bb :: g.g_nodes; bb - let close_node g bb = + let close_node bb = if bb.bb_id > 0 then begin assert(not bb.bb_closed); bb.bb_closed <- true @@ -456,15 +515,17 @@ | _ -> () end; - DynArray.iter (fun e -> match e.eexpr with - | TVar(v,eo) -> - declare_var g v bb; - if eo <> None then add_var_def g bb v; - | TBinop(OpAssign,{eexpr = TLocal v},_) -> - add_var_def g bb v - | _ -> - () - ) bb.bb_el + let infer e = match e.eexpr with + | TVar(v,eo) -> + declare_var g v bb; + if eo <> None then add_var_def g bb v; + | TBinop(OpAssign,{eexpr = TLocal v},_) -> + add_var_def g bb v + | _ -> + () + in + DynArray.iter infer bb.bb_el; + terminator_iter infer bb.bb_terminator; ) (* Infers the scopes of all reachable blocks. This function can be run multiple times @@ -495,7 +556,7 @@ loop scopes' bb_exc; List.iter (fun (_,bb_catch) -> loop (next_scope scopes) bb_catch) catches; loop scopes bb_next - | SEWhile(bb_head,bb_body,bb_next) -> + | SEWhile(bb_head,bb_body,bb_next,_) -> let scopes' = next_scope scopes in loop scopes' bb_head; loop scopes' bb_body; diff -Nru haxe-4.2.2/src-json/define.json haxe-4.2.3/src-json/define.json --- haxe-4.2.2/src-json/define.json 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/src-json/define.json 2021-07-03 09:55:11.000000000 +0000 @@ -319,6 +319,12 @@ "platforms": ["js"] }, { + "name": "JsGlobal", + "define": "js_global", + "doc": "Customizes the global object name.", + "platforms": ["js"] + }, + { "name": "JsUnflatten", "define": "js_unflatten", "doc": "Generate nested objects for packages and types.", diff -Nru haxe-4.2.2/std/php/Attribute.hx haxe-4.2.3/std/php/Attribute.hx --- haxe-4.2.2/std/php/Attribute.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/std/php/Attribute.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,38 @@ +/* + * Copyright (C)2005-2021 Haxe Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package php; + +/** + @see https://www.php.net/manual/en/language.attributes.php +**/ +@:native("Attribute") +extern final class Attribute { + @:phpClassConst static final IS_REPEATABLE: Int; + @:phpClassConst static final TARGET_ALL: Int; + @:phpClassConst static final TARGET_CLASS_CONSTANT: Int; + @:phpClassConst static final TARGET_CLASS: Int; + @:phpClassConst static final TARGET_FUNCTION: Int; + @:phpClassConst static final TARGET_METHOD: Int; + @:phpClassConst static final TARGET_PARAMETER: Int; + @:phpClassConst static final TARGET_PROPERTY: Int; +} diff -Nru haxe-4.2.2/std/php/Global.hx haxe-4.2.3/std/php/Global.hx --- haxe-4.2.2/std/php/Global.hx 2021-06-07 10:00:40.000000000 +0000 +++ haxe-4.2.3/std/php/Global.hx 2021-07-03 09:55:12.000000000 +0000 @@ -927,6 +927,26 @@ static function hash(algo:String, str:String, raw_output:Bool = false):String; /** + @see http://php.net/manual/en/function.hash-algos.php + **/ + static function hash_algos():NativeIndexedArray; + + /** + @see http://php.net/manual/en/function.hash-hmac.php + **/ + static function hash_hmac(algo:String, data:String, key:String, binary:Bool = false):EitherType; + + /** + @see http://php.net/manual/en/function.hash-hmac-algos.php + **/ + static function hash_hmac_algos():NativeIndexedArray; + + /** + @see http://php.net/manual/en/function.hash-hmac-file.php + **/ + static function hash_hmac_file(algo:String, data:String, key:String, binary:Bool = false):EitherType; + + /** @see http://php.net/manual/en/function.pack.php **/ static function pack(format:String, args:Rest):String; @@ -1844,4 +1864,8 @@ **/ static function number_format(num:Float, ?decimals:Int, ?decimal_separator:String, ?thousands_separator:String):String; + /** + @see http://php.net/manual/en/function.empty.php + **/ + static function empty(variable:Any):Bool; } diff -Nru haxe-4.2.2/std/php/IntlCalendar.hx haxe-4.2.3/std/php/IntlCalendar.hx --- haxe-4.2.2/std/php/IntlCalendar.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/std/php/IntlCalendar.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * Copyright (C)2005-2021 Haxe Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package php; + +import haxe.extern.EitherType; + +/** + @see https://www.php.net/manual/en/class.intlcalendar.php +**/ +@:native("IntlCalendar") +extern class IntlCalendar { + @:phpClassConst static final DOW_FRIDAY: Int; + @:phpClassConst static final DOW_MONDAY: Int; + @:phpClassConst static final DOW_SATURDAY: Int; + @:phpClassConst static final DOW_SUNDAY: Int; + @:phpClassConst static final DOW_THURSDAY: Int; + @:phpClassConst static final DOW_TUESDAY: Int; + @:phpClassConst static final DOW_TYPE_WEEKDAY: Int; + @:phpClassConst static final DOW_TYPE_WEEKEND_CEASE: Int; + @:phpClassConst static final DOW_TYPE_WEEKEND_OFFSET: Int; + @:phpClassConst static final DOW_TYPE_WEEKEND: Int; + @:phpClassConst static final DOW_WEDNESDAY: Int; + @:phpClassConst static final FIELD_AM_PM: Int; + @:phpClassConst static final FIELD_DATE: Int; + @:phpClassConst static final FIELD_DAY_OF_MONTH: Int; + @:phpClassConst static final FIELD_DAY_OF_WEEK_IN_MONTH: Int; + @:phpClassConst static final FIELD_DAY_OF_WEEK: Int; + @:phpClassConst static final FIELD_DAY_OF_YEAR: Int; + @:phpClassConst static final FIELD_DOW_LOCAL: Int; + @:phpClassConst static final FIELD_DST_OFFSET: Int; + @:phpClassConst static final FIELD_ERA: Int; + @:phpClassConst static final FIELD_EXTENDED_YEAR: Int; + @:phpClassConst static final FIELD_FIELD_COUNT: Int; + @:phpClassConst static final FIELD_HOUR_OF_DAY: Int; + @:phpClassConst static final FIELD_HOUR: Int; + @:phpClassConst static final FIELD_IS_LEAP_MONTH: Int; + @:phpClassConst static final FIELD_JULIAN_DAY: Int; + @:phpClassConst static final FIELD_MILLISECOND: Int; + @:phpClassConst static final FIELD_MILLISECONDS_IN_DAY: Int; + @:phpClassConst static final FIELD_MINUTE: Int; + @:phpClassConst static final FIELD_MONTH: Int; + @:phpClassConst static final FIELD_SECOND: Int; + @:phpClassConst static final FIELD_WEEK_OF_MONTH: Int; + @:phpClassConst static final FIELD_WEEK_OF_YEAR: Int; + @:phpClassConst static final FIELD_YEAR_WOY: Int; + @:phpClassConst static final FIELD_YEAR: Int; + @:phpClassConst static final FIELD_ZONE_OFFSET: Int; + @:phpClassConst static final WALLTIME_FIRST: Int; + @:phpClassConst static final WALLTIME_LAST: Int; + @:phpClassConst static final WALLTIME_NEXT_VALID: Int; + + static function createInstance(timeZone: EitherType, EitherType> = null, locale: Null = ""): Null; + static function fromDateTime(dateTime: EitherType): Null; + static function getAvailableLocales(): NativeIndexedArray; + static function getKeywordValuesForLocale(key: String, locale: String, commonlyUsed: Bool): EitherType, Bool>; + static function getNow(): Float; + + function add(field: Int, amount: Int): Bool; + function after(other: IntlCalendar): Bool; + function before(other: IntlCalendar): Bool; + function clear(field: Null = null): Bool; + function equals(other: IntlCalendar): Bool; + function fieldDifference(when: Float, field: Int): EitherType; + function get(field: Int): Int; + function getActualMaximum(field: Int): EitherType; + function getActualMinimum(field: Int): EitherType; + function getDayOfWeekType(dayOfWeek: Int): EitherType; + function getErrorCode(): Int; + function getErrorMessage(): String; + function getFirstDayOfWeek(): EitherType; + function getGreatestMinimum(field: Int): EitherType; + function getLeastMaximum(field: Int): EitherType; + function getLocale(localeType: Int): EitherType; + function getMaximum(field: Int): EitherType; + function getMinimalDaysInFirstWeek(): EitherType; + function getMinimum(field: Int): EitherType; + function getRepeatedWallTimeOption(): Int; + function getSkippedWallTimeOption(): Int; + function getTime(): Float; + function getTimeZone(): IntlTimeZone; + function getType(): String; + function getWeekendTransition(dayOfWeek: Int): EitherType; + function inDaylightTime(): Bool; + function isEquivalentTo(other: IntlCalendar): Bool; + function isLenient(): Bool; + function isSet(field: Int): Bool; + function isWeekend(date: Null = null): Bool; + function roll(field: Int, amountOrUpOrDown: EitherType): Bool; + function setFirstDayOfWeek(dayOfWeek: Int): Bool; + function setLenient(isLenient: Bool): Bool; + function setMinimalDaysInFirstWeek(minimalDays: Int): Bool; + function setRepeatedWallTimeOption(wallTimeOption: Int): Bool; + function setSkippedWallTimeOption(wallTimeOption: Int): Bool; + function setTime(date: Float): Bool; + function setTimeZone(timeZone: EitherType, EitherType>): Bool; + function toDateTime(): EitherType; + + @:overload(function(year: Int, month: Int, dayOfMonth: Null = null, hour: Null = null, minute: Null = null, second: Null = null): Bool {}) + function set(field: Int, value: Int): Bool; +} diff -Nru haxe-4.2.2/std/php/IntlDateFormatter.hx haxe-4.2.3/std/php/IntlDateFormatter.hx --- haxe-4.2.2/std/php/IntlDateFormatter.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/std/php/IntlDateFormatter.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright (C)2005-2021 Haxe Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package php; + +import haxe.extern.EitherType; + +/** + @see https://www.php.net/manual/en/class.intldateformatter.php +**/ +@:native("IntlDateFormatter") +extern class IntlDateFormatter { + @:phpClassConst static final FULL: Int; + @:phpClassConst static final GREGORIAN: Int; + @:phpClassConst static final LONG: Int; + @:phpClassConst static final MEDIUM: Int; + @:phpClassConst static final NONE: Int; + @:phpClassConst static final RELATIVE_FULL: Int; + @:phpClassConst static final RELATIVE_LONG: Int; + @:phpClassConst static final RELATIVE_MEDIUM: Int; + @:phpClassConst static final RELATIVE_SHORT: Int; + @:phpClassConst static final SHORT: Int; + @:phpClassConst static final TRADITIONAL: Int; + + function new(locale: Null, dateType: Int, timeType: Int, timezone: EitherType> = null, + calendar: EitherType = null, pattern: String = ""); + + static function create(locale: Null, dateType: Int, timeType: Int, + timezone: EitherType> = null, + calendar: EitherType = null, pattern: String = ""): Null; + + static function formatObject(datetime: EitherType, format: EitherType, String>> = null, + locale: String = null): EitherType; + + function format(datetime: EitherType>>>>>): EitherType; + function getCalendar(): EitherType; + function getCalendarObject(): EitherType, Bool>; + function getDateType(): EitherType; + function getErrorCode(): Int; + function getErrorMessage(): String; + function getLocale(?type: Int): EitherType; + function getPattern(): EitherType; + function getTimeType(): EitherType; + function getTimeZone(): EitherType; + function getTimeZoneId(): EitherType; + function isLenient(): Bool; + function localtime(string: String, offset: Ref = null): EitherType, Bool>; + function parse(string: String, offset: Ref = null): EitherType>; + function setCalendar(calendar: EitherType, Int>): Bool; + function setLenient(lenient: Bool): Bool; + function setPattern(pattern: String): Bool; + function setTimeZone(timezone: EitherType, EitherType>): Null; +} diff -Nru haxe-4.2.2/std/php/IntlIterator.hx haxe-4.2.3/std/php/IntlIterator.hx --- haxe-4.2.2/std/php/IntlIterator.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/std/php/IntlIterator.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * Copyright (C)2005-2021 Haxe Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package php; + +/** + @see https://www.php.net/manual/en/class.intliterator.php +**/ +@:native("IntlIterator") +extern class IntlIterator implements NativeIterator { + function current(): V; + function key(): K; + function next(): Void; + function rewind(): Void; + function valid(): Bool; +} diff -Nru haxe-4.2.2/std/php/IntlTimeZone.hx haxe-4.2.3/std/php/IntlTimeZone.hx --- haxe-4.2.2/std/php/IntlTimeZone.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/std/php/IntlTimeZone.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * Copyright (C)2005-2021 Haxe Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package php; + +import haxe.extern.EitherType; + +/** + @see https://www.php.net/manual/en/class.intltimezone.php +**/ +@:native("IntlTimeZone") +extern class IntlTimeZone { + @:phpClassConst static final DISPLAY_LONG: Int; + @:phpClassConst static final DISPLAY_SHORT: Int; + + static function countEquivalentIDs(zoneId: String): Int; + static function createDefault(): IntlTimeZone; + static function createEnumeration(countryOrRawOffset: Any): IntlIterator; + static function createTimeZone(zoneId: String): IntlTimeZone; + static function createTimeZoneIDEnumeration(zoneType: Int, ?region: String, ?rawOffset: Int): EitherType, Bool>; + static function fromDateTimeZone(zoneId: DateTimeZone): IntlTimeZone; + static function getCanonicalID(zoneId: String, isSystemID: Ref): String; + static function getEquivalentID(zoneId: String, index: Int): String; + static function getGMT(): IntlTimeZone; + static function getIDForWindowsID(timezone: String, ?region: String): EitherType; + static function getRegion(zoneId: String): EitherType; + static function getTZDataVersion(): String; + static function getUnknown(): Null; + static function getWindowsID(timezone: String): EitherType; + + function getDisplayName(?isDaylight: Bool, ?style: Int, ?locale: String): String; + function getDSTSavings(): Int; + function getErrorCode(): Int; + function getErrorMessage(): String; + function getID(): String; + function getOffset(date: Float, local: Bool, rawOffset: Ref, dstOffset: Ref): Bool; + function getRawOffset(): Int; + function hasSameRules(otherTimeZone: IntlTimeZone): Bool; + function toDateTimeZone(): DateTimeZone; + function useDaylightTime(): Bool; +} diff -Nru haxe-4.2.2/std/php/NumberFormatter.hx haxe-4.2.3/std/php/NumberFormatter.hx --- haxe-4.2.2/std/php/NumberFormatter.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/std/php/NumberFormatter.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,126 @@ +/* + * Copyright (C)2005-2021 Haxe Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package php; + +import haxe.extern.EitherType; + +/** + @see https://www.php.net/manual/en/class.numberformatter.php +**/ +@:native("NumberFormatter") +extern class NumberFormatter { + @:phpClassConst static final CURRENCY: Int; + @:phpClassConst static final CURRENCY_ACCOUNTING: Int; + @:phpClassConst static final CURRENCY_CODE: Int; + @:phpClassConst static final CURRENCY_SYMBOL: Int; + @:phpClassConst static final DECIMAL: Int; + @:phpClassConst static final DECIMAL_ALWAYS_SHOWN: Int; + @:phpClassConst static final DECIMAL_SEPARATOR_SYMBOL: Int; + @:phpClassConst static final DEFAULT_RULESET: Int; + @:phpClassConst static final DEFAULT_STYLE: Int; + @:phpClassConst static final DIGIT_SYMBOL: Int; + @:phpClassConst static final DURATION: Int; + @:phpClassConst static final EXPONENTIAL_SYMBOL: Int; + @:phpClassConst static final FORMAT_WIDTH: Int; + @:phpClassConst static final FRACTION_DIGITS: Int; + @:phpClassConst static final GROUPING_SEPARATOR_SYMBOL: Int; + @:phpClassConst static final GROUPING_SIZE: Int; + @:phpClassConst static final GROUPING_USED: Int; + @:phpClassConst static final IGNORE: Int; + @:phpClassConst static final INFINITY_SYMBOL: Int; + @:phpClassConst static final INTEGER_DIGITS: Int; + @:phpClassConst static final INTL_CURRENCY_SYMBOL: Int; + @:phpClassConst static final LENIENT_PARSE: Int; + @:phpClassConst static final MAX_FRACTION_DIGITS: Int; + @:phpClassConst static final MAX_INTEGER_DIGITS: Int; + @:phpClassConst static final MAX_SIGNIFICANT_DIGITS: Int; + @:phpClassConst static final MIN_FRACTION_DIGITS: Int; + @:phpClassConst static final MIN_INTEGER_DIGITS: Int; + @:phpClassConst static final MIN_SIGNIFICANT_DIGITS: Int; + @:phpClassConst static final MINUS_SIGN_SYMBOL: Int; + @:phpClassConst static final MONETARY_GROUPING_SEPARATOR_SYMBOL: Int; + @:phpClassConst static final MONETARY_SEPARATOR_SYMBOL: Int; + @:phpClassConst static final MULTIPLIER: Int; + @:phpClassConst static final NAN_SYMBOL: Int; + @:phpClassConst static final NEGATIVE_PREFIX: Int; + @:phpClassConst static final NEGATIVE_SUFFIX: Int; + @:phpClassConst static final ORDINAL: Int; + @:phpClassConst static final PAD_AFTER_PREFIX: Int; + @:phpClassConst static final PAD_AFTER_SUFFIX: Int; + @:phpClassConst static final PAD_BEFORE_PREFIX: Int; + @:phpClassConst static final PAD_BEFORE_SUFFIX: Int; + @:phpClassConst static final PAD_ESCAPE_SYMBOL: Int; + @:phpClassConst static final PADDING_CHARACTER: Int; + @:phpClassConst static final PADDING_POSITION: Int; + @:phpClassConst static final PARSE_INT_ONLY: Int; + @:phpClassConst static final PATTERN_DECIMAL: Int; + @:phpClassConst static final PATTERN_RULEBASED: Int; + @:phpClassConst static final PATTERN_SEPARATOR_SYMBOL: Int; + @:phpClassConst static final PERCENT: Int; + @:phpClassConst static final PERCENT_SYMBOL: Int; + @:phpClassConst static final PERMILL_SYMBOL: Int; + @:phpClassConst static final PLUS_SIGN_SYMBOL: Int; + @:phpClassConst static final POSITIVE_PREFIX: Int; + @:phpClassConst static final POSITIVE_SUFFIX: Int; + @:phpClassConst static final PUBLIC_RULESETS: Int; + @:phpClassConst static final ROUND_CEILING: Int; + @:phpClassConst static final ROUND_DOWN: Int; + @:phpClassConst static final ROUND_FLOOR: Int; + @:phpClassConst static final ROUND_HALFDOWN: Int; + @:phpClassConst static final ROUND_HALFEVEN: Int; + @:phpClassConst static final ROUND_HALFUP: Int; + @:phpClassConst static final ROUND_UP: Int; + @:phpClassConst static final ROUNDING_INCREMENT: Int; + @:phpClassConst static final ROUNDING_MODE: Int; + @:phpClassConst static final SCIENTIFIC: Int; + @:phpClassConst static final SECONDARY_GROUPING_SIZE: Int; + @:phpClassConst static final SIGNIFICANT_DIGIT_SYMBOL: Int; + @:phpClassConst static final SIGNIFICANT_DIGITS_USED: Int; + @:phpClassConst static final SPELLOUT: Int; + @:phpClassConst static final TYPE_CURRENCY: Int; + @:phpClassConst static final TYPE_DEFAULT: Int; + @:phpClassConst static final TYPE_DOUBLE: Int; + @:phpClassConst static final TYPE_INT32: Int; + @:phpClassConst static final TYPE_INT64: Int; + @:phpClassConst static final ZERO_DIGIT_SYMBOL: Int; + + function new(locale: String, style: Int, ?pattern: String); + + static function create(locale: String, style: Int, ?pattern: String): EitherType; + + function formatCurrency(value: Float, currency: String): EitherType; + function format(value: EitherType, ?type: Int): EitherType; + function getAttribute(attr: Int): EitherType; + function getErrorCode(): Int; + function getErrorMessage(): String; + function getLocale(?type: Int): String; + function getPattern(): EitherType; + function getSymbol(attr: Int): EitherType; + function getTextAttribute(attr: Int): EitherType; + function parseCurrency(value: String, currency: Ref, ?position: Ref): EitherType; + function parse(value: String, ?type: Int, ?position: Ref): EitherType>>; + function setAttribute(attr: Int, value: Int): Bool; + function setPattern(pattern: String): Bool; + function setSymbol(attr: Int, value: String): Bool; + function setTextAttribute(attr: Int, value: String): Bool; +} diff -Nru haxe-4.2.2/tests/misc/java/projects/Issue10280/compile.hxml haxe-4.2.3/tests/misc/java/projects/Issue10280/compile.hxml --- haxe-4.2.2/tests/misc/java/projects/Issue10280/compile.hxml 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/tests/misc/java/projects/Issue10280/compile.hxml 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,3 @@ +-main Main +--jvm jvm.jar +-cmd java -jar jvm.jar \ No newline at end of file Binary files /tmp/tmpvjzkbu1j/R2EtKb_hDU/haxe-4.2.2/tests/misc/java/projects/Issue10280/jvm.jar and /tmp/tmpvjzkbu1j/CwiORuOXAA/haxe-4.2.3/tests/misc/java/projects/Issue10280/jvm.jar differ diff -Nru haxe-4.2.2/tests/misc/java/projects/Issue10280/Main.hx haxe-4.2.3/tests/misc/java/projects/Issue10280/Main.hx --- haxe-4.2.2/tests/misc/java/projects/Issue10280/Main.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/tests/misc/java/projects/Issue10280/Main.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,40 @@ +import haxe.macro.Compiler; +import haxe.macro.Context; +import haxe.macro.Expr; +import haxe.macro.Expr.Field; +class Main { + static function main() OldClass.define(); +} + +#if !macro +@:build(OldClass.build()) +#end +@:native("NewClass") +class OldClass { + #if !macro + public function new() {}; + #end + + macro public static function define():Expr return macro new OldClass(); + + macro static function build():Array + { + var defined = false; + + Context.onAfterTyping(_ -> { + if (defined) return; + + Context.defineType( + macro class NewClass { + public function new() {} + } + ); + + Compiler.exclude('OldClass'); + + defined = true; + }); + + return null; + } +} \ No newline at end of file diff -Nru haxe-4.2.2/tests/unit/src/unit/issues/Issue10259.hx haxe-4.2.3/tests/unit/src/unit/issues/Issue10259.hx --- haxe-4.2.2/tests/unit/src/unit/issues/Issue10259.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/tests/unit/src/unit/issues/Issue10259.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,17 @@ +package unit.issues; + +import unit.issues.misc.Issue10259Macro; +import utest.Assert; + +class Issue10259 extends Test { + function test() { + final maps = Issue10259Macro.getMaps(); + + Assert.same([1 => 2], maps.intMap); + Assert.same(["1" => 2], maps.stringMap); + for (key => value in maps.objectMap) { + eq(1, key.x); + eq(2, value); + } + } +} diff -Nru haxe-4.2.2/tests/unit/src/unit/issues/Issue10261.hx haxe-4.2.3/tests/unit/src/unit/issues/Issue10261.hx --- haxe-4.2.2/tests/unit/src/unit/issues/Issue10261.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/tests/unit/src/unit/issues/Issue10261.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,20 @@ +package unit.issues; + +import utest.Assert; + +class Issue10261 extends Test { + function call(x:Int) { + return ""; + } + + function write() { + return { + while (true) {} + call(0); + } + } + + function test() { + Assert.pass(); + } +} diff -Nru haxe-4.2.2/tests/unit/src/unit/issues/misc/Issue10259Macro.hx haxe-4.2.3/tests/unit/src/unit/issues/misc/Issue10259Macro.hx --- haxe-4.2.2/tests/unit/src/unit/issues/misc/Issue10259Macro.hx 1970-01-01 00:00:00.000000000 +0000 +++ haxe-4.2.3/tests/unit/src/unit/issues/misc/Issue10259Macro.hx 2021-07-03 09:55:12.000000000 +0000 @@ -0,0 +1,22 @@ +package unit.issues.misc; + +import haxe.macro.Context; +import haxe.macro.Expr; + +class Issue10259Macro { + macro static public function getMaps() { + final p = Context.currentPos(); + final intMap = Context.makeExpr([1 => 2], p); + final stringMap = Context.makeExpr(["1" => 2], p); + final objectMap = Context.makeExpr([ + {x: 1} + => 2 + ], p); + + return macro { + intMap: $intMap, + stringMap: $stringMap, + objectMap: $objectMap + } + } +}