1
0
Fork 0
Commit Graph

112 Commits (42c6a0d7c50c94d79298248f5f8ae51a522f9844)

Author SHA1 Message Date
jrfnl 42c6a0d7c5 ClassMapGenerator: fix the regex
By using a look ahead assertion to match "new line - maybe whitespace - marker", the negative performance impact of the `.*` is significantly mitigated and backtracing will be severely limited.

This fixes the bug as reported in 10037.

The bug was discovered due to a PHP 8.1 "passing null to non-nullable" deprecation notice being thrown, but is not a PHP 8.1 bug.

In actual fact, this issue affected all PHP versions and could lead to incomplete classmaps when the code base contained files with huge heredocs/nowdocs.

The regex change (not completely) incidentally also fixes an issue with markers in a heredoc/nowdoc not being correctly handled. This bug could lead to "classes" being added to the class map which aren't actually classes.

Fixes 10037
2021-08-11 22:26:12 +02:00
Jordi Boggiano 3380178798
Introduce a cross-platform safe version of is_readable to support UNC / wsl$ paths on Windows (#9861) 2021-05-04 13:25:52 +02:00
Ayesh Karunaratne 228428747a
Add support for autoloading Enums
PHP 8.1 supports Enums, and [Enums follow class-semantics](https://php.watch/versions/8.1/enums#class-semantics-autoload).

Composer's class-map generator currently looks for `class`, `interface`, and `trait` keywords. If Composer is run in PHP 8.1 or later, Composer now additionally looks for `enum` keyword as well. This is similar to how Hack's `enum` support is added.

This PR also adds tests for basic enums, backed enums, namespaced enums, and an enum that implements an interface and extends a class.
2021-02-06 15:51:18 +07:00
Jordi Boggiano 07b8c23f02
Merge branch '1.10' 2021-01-27 15:46:58 +01:00
Jordi Boggiano 92313447d6
Filter out exclude-from-classmap rules to avoid generating very long regexes, fixes #9487 2021-01-27 15:10:32 +01:00
Jordi Boggiano b7d770659b
CS fixes 2020-11-22 14:52:39 +01:00
Simon Berger bae227ec2d Changed all substr calls used to compare fragments of text to strpos
Some additional code cleanups in those classes

Reverted change causing issues
2020-09-07 21:08:34 +02:00
Jordi Boggiano c8731598cc
Merge branch '1.10' 2020-06-16 17:16:42 +02:00
Graham Campbell fa799970ad Replace whitelist with allow list 2020-06-07 22:15:09 +01:00
Markus Staab 6a0e02db1b Autoload-Generator: support glob patterns in classmaps 2020-05-23 21:22:07 +02:00
Jordi Boggiano 80505e745e
Fix phpstan issues 2020-04-07 14:40:51 +02:00
Jordi Boggiano 87757de6bc
Merge branch '2.0' 2020-04-07 09:39:00 +02:00
Jordi Boggiano 86677ad172
Avoid scanning files twice when generating optimized autoloaders, fixes #8683 2020-03-13 18:28:27 +01:00
Jordi Boggiano 24a5a0dacb
Skip invalid PSR-0/4 classes from optimized autoloader, fixes #8403 2020-03-10 15:40:45 +01:00
Jordi Boggiano 8fd70d2dc4
Target ClassMapGenerator ignoring of invalid PSR classes for 2.0 2020-02-14 10:07:51 +01:00
Jordi Boggiano 3496431a6c
Fix PSR warnings for optimized autoloader, refs #8397, refs #8403 2019-11-01 17:13:02 +01:00
Jordi Boggiano d059d90ecf
Fix PSR warnings for optimized autoloader, refs #8397, refs #8403 2019-11-01 16:18:42 +01:00
Jordi Boggiano 502b68967a
Fix tests for PSR-fix in optimized autoloader, refs #8397 2019-11-01 15:31:55 +01:00
Jordi Boggiano f6b8643dcd
Change PSR-fix for optimized autoloader to only warn for now, refs #8397 2019-11-01 14:50:15 +01:00
Andriy Maletsky ec293adabc make optimized autoloader respect PSR standards 2019-10-29 20:36:29 +02:00
zakonnic 9f6e45051a Optimize template for striping non-php blocks 2019-09-20 16:59:53 +03:00
zakonnic ec96e5de64 Fix incorrect strip of non-php blocks in the file 2019-09-20 12:58:09 +03:00
Rob Bast 4ea8e48bf8 leading whitespace is optional, but newline is not 2019-04-04 08:45:08 +02:00
Rob Bast 25e3f6d4b9 expand regex and testcases 2019-04-04 08:31:26 +02:00
Rob Bast 971528916b fix regex for heredoc/nowdoc
* take into account relaxed changes introduced in php 7.3
  * see: 4887357269
* allow " as well as ', which was introduced in php 5.3

closes #8080
2019-04-03 10:46:35 +02:00
Jordi Boggiano 3b9d6769bf Fix class names in comments being parsed in short_open_tags files, fixes #7289 2018-05-04 11:02:12 +02:00
Petr /Peggy/ Sládek 8d06832077 Update ClassMapGenerator to work better with symlinks, fixes #7252, closes #7251 2018-04-12 09:37:26 +02:00
Jordi Boggiano bf940fb21b Fix exclude-from-classmap when a package is installed as a symlink, fixes #6397 2017-08-06 17:21:04 +02:00
Jordi Boggiano 81f65b7a2a Fix exclude-from-classmap being ignored when cwd has the wrong case on case insensitive filesystems 2017-07-06 09:53:33 +02:00
Jordi Boggiano c289776d94 Force-collapse multiple slashes into one, fixes #5387 2016-05-31 19:37:39 +01:00
Jordi Boggiano f0d67923a5 Fix classmap generator over anonymous classes extending/implementing something, fixes #5239 2016-04-24 14:40:51 +01:00
Jordi Boggiano 5822b58c1f Avoid using realpath when generating classmap, speeds up generation and keeps paths local to project in case of symlinks/path repo 2016-04-01 11:32:04 +01:00
Niels Keurentjes b059cbe37c Removed unused variables and includes, fixed functions being called with more arguments than declared. 2016-02-27 23:21:11 +01:00
Niels Keurentjes 0b55a0ca91 Can't use error_clear_last as it was introduced in PHP7. 2016-02-06 02:58:36 +01:00
Niels Keurentjes 6a53b1df42 Further reorganized messy checking code. 2016-02-06 02:40:16 +01:00
Niels Keurentjes bb08f76ad9 Use error_get_last to verify why php_strip_whitespace would return an empty string. 2016-02-06 02:32:08 +01:00
Niels Keurentjes 86fc85fe56 Add a comment explaining the use of @ instead of Silencer in this specific situation. 2016-02-06 02:04:48 +01:00
Niels Keurentjes c2d9960898 Ensure exception is thrown when classmaps are requested for corrupted or binary files. Refs #4885 2016-02-06 02:00:54 +01:00
Niels Keurentjes 18cd4f966b Added silencer utility to more gracefully handle error suppression without hiding errors or worse. Fixes #4203, #4683 2016-01-25 23:37:54 +01:00
Jordi Boggiano 084f6de24e Merge remote-tracking branch 'trivago/add_exclude'
Conflicts:
	doc/04-schema.md
	src/Composer/Autoload/AutoloadGenerator.php
2015-10-30 00:00:44 +00:00
Rob Bast b523fc0b7b ran fixers 2015-10-13 11:35:51 +02:00
Jordi Boggiano ce08582671 Fix CS 2015-09-28 10:53:24 +01:00
Jordi Boggiano 943107cfe7 Load most specific namespaces always, and dependents before dependencies when building classmaps
This also adds notifications of duplicate classes
2015-06-26 14:40:26 +01:00
Jordi Boggiano e73448ae1e Add possessive quantifiers to avoid backtracking and fix segfault on large files, fixes #4153 2015-06-16 11:22:45 +01:00
Possum 29ca21f30e PHP version checks tweaking 2015-05-05 20:18:24 +02:00
Jordi Boggiano dbfd47eeca CS fixes 2015-04-15 01:22:19 +01:00
msiebeneicher 7522a33079 Merge branch 'master' of https://github.com/composer/composer into add_exclude
# By Jordi Boggiano (30) and others
# Via Jordi Boggiano (37) and Morgan Campbell (1)
* 'master' of https://github.com/composer/composer: (83 commits)
  Update 01-basic-usage.md
  Revert 331425bcb3 as well, fixes #3612
  Revert "Disable overwrites when no-ansi is present, fixes #3612"
  Update deps
  Use justinrainbow/json-schema 1.4
  Improved wording
  Fix docs basic-auth => http-basic
  Add test for Generics class
  Single variable for traits and enums
  Use HHVM_VERSION instead of HPHP_VERSION
  Add support for using classmap to autoload Hack enums
  Re-use existing autoloader suffix if available, fixes #3701
  Report Travis CI build success early
  Test on HHVM nightly releases. Allow to fail.
  Make parseJson safer
  Use get home from Config instead of factory
  Fix env override regression, fixes #3820
  [create-project] Used no progress value for dependencies
  Add docBlock and fix CS
  Fix output of first line of progress when output is not decorated, refs #3818
  ...
2015-03-25 16:27:23 +01:00
Fred Emmott bdf51ab16d Single variable for traits and enums 2015-03-09 10:05:12 -07:00
Fred Emmott cb1ea889d6 Use HHVM_VERSION instead of HPHP_VERSION 2015-03-09 10:02:10 -07:00
Fred Emmott 33ea86573e Add support for using classmap to autoload Hack enums
fixes composer/composer#3823

Ran tests with both PHP5.5.9-1ubuntu4.5 and HHVM 3.6. Test fails on HHVM only
if I back out the ClassMapGenerator.php change.
2015-03-09 09:38:02 -07:00