Skip to content

#62492: dba functions should return false on invalid arguments - #127

Closed
marc-mabe wants to merge 1 commit into
php:masterfrom
marc-mabe:bug62492
Closed

marc-mabe wants to merge 1 commit into
php:masterfrom
marc-mabe:bug62492

Conversation

@marc-mabe

Copy link
Copy Markdown
Contributor

No description provided.

@smalyshev

Copy link
Copy Markdown
Contributor

Maybe the docs are wrong somewhere, please file a docs bug. But all PHP functions return null on wrong args, so should do DBA functions.

@php-pulls

Copy link
Copy Markdown

Comment on behalf of stas at php.net:

working as designed

@php-pulls php-pulls closed this Jul 15, 2012
heyJordanParker referenced this pull request in heyJordanParker/php-sharp Oct 13, 2026
Problem: the generics slice branched from master c3a4a3c. Master since
gained effects on function types (#126), private fields with no modifier
(#128), union collections (#116), the sortedBy key rule (#125), macOS and
Linux CI (#127), function uses (#122) and message fixes (#117). Ten files
conflicted, and one master test named a syntax field the slice renamed.

Solution: every conflict keeps both sides' behavior.
- A refused expression has the error type in PHP# and `never` in PHP, as
  master types it, and `is_refused` keeps the slice's wider set of refused
  generic expressions.
- An argument is a possible mismatch only when the parts it may share with
  the parameter, as `shareable_part` takes them, fit through master's
  `can_argument_be_identical`, and `verify_argument_type` returns whether
  the argument fits, as master's effect rules read it.
- A method value's signature names the class it is read through, as master
  needs for `extern` lookups, while the slice still specializes it for its
  receiver and fixes its type arguments.
- A PHP# literal's backed enum key and master's other new calls pass the
  dialect `get_backing_key_type` takes on the slice.
- Comparisons master added use the slice's `ComparisonResult::for_dialect`.

crates/
├── analyzer/src/
│   ├── artifacts.rs                         tested_types beside function_values
│   ├── expression/
│   │   ├── array.rs                         master's PHP# key branch, with the dialect
│   │   ├── assignment/array_assignment.rs   every declared element, for_dialect
│   │   └── mod.rs                           slice's is_refused, master's error type
│   ├── invocation/arguments.rs              shareable_part over can_argument_be_identical
│   ├── resolver/
│   │   ├── method.rs                        declared collections, paired with their written atomic
│   │   └── property.rs                      method value source is the read-through class
│   └── statement/
│       ├── class_like/property.rs           for_dialect, records fitting function values
│       └── function_like/mod.rs             passes tested_types and function_values up
├── codex/src/scanner/ttype.rs               function type keeps its effects and its type parameters
└── syntax/tests/sharp.rs                    effects test reads type_arguments.arguments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants