1
0
mirror of https://github.com/danog/psalm.git synced 2025-01-22 05:41:20 +01:00

Merge pull request #8689 from Nicelocal/fix_formatting

This commit is contained in:
Bruce Weirdan 2022-11-10 13:21:37 -04:00 committed by GitHub
commit 4d53d26f00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 71 additions and 70 deletions

View File

@ -5,58 +5,58 @@ Atomic types are the basic building block of all type information used in Psalm.
_Click on the » next to each type to view detailed documentation and examples._
* [Scalar types »](scalar_types.md)
* [bool »](scalar_types.md#scalar)
* [int »](scalar_types.md#scalar)
* [float »](scalar_types.md#scalar)
* [string »](scalar_types.md#scalar)
* [`int-range<x, y>` &raquo;](scalar_types.md#int-range)
* [`int-mask<1, 2, 4>` &raquo;](scalar_types.md#int-mask1-2-4)
* [`int-mask-of<MyClass::CLASS_CONSTANT_*>` &raquo;](scalar_types.md#int-mask-ofmyclassclass_constant_)
* [class-string and class-string&lt;Foo&gt; &raquo;](scalar_types.md#class-string-interface-string)
* [trait-string &raquo;](scalar_types.md#trait-string)
* [enum-string &raquo;](scalar_types.md#enum-string)
* [callable-string &raquo;](scalar_types.md#callable-string)
* [numeric-string &raquo;](scalar_types.md#numeric-string)
* [literal-string &raquo;](scalar_types.md#literal-string)
* [literal-int &raquo;](scalar_types.md#literal-int)
* [array-key &raquo;](scalar_types.md#array-key)
* [numeric &raquo;](scalar_types.md#numeric)
* [scalar &raquo;](scalar_types.md#scalar)
* [bool &raquo;](scalar_types.md#scalar)
* [int &raquo;](scalar_types.md#scalar)
* [float &raquo;](scalar_types.md#scalar)
* [string &raquo;](scalar_types.md#scalar)
* [`int-range<x, y>` &raquo;](scalar_types.md#int-range)
* [`int-mask<1, 2, 4>` &raquo;](scalar_types.md#int-mask1-2-4)
* [`int-mask-of<MyClass::CLASS_CONSTANT_*>` &raquo;](scalar_types.md#int-mask-ofmyclassclass_constant_)
* [class-string and class-string&lt;Foo&gt; &raquo;](scalar_types.md#class-string-interface-string)
* [trait-string &raquo;](scalar_types.md#trait-string)
* [enum-string &raquo;](scalar_types.md#enum-string)
* [callable-string &raquo;](scalar_types.md#callable-string)
* [numeric-string &raquo;](scalar_types.md#numeric-string)
* [literal-string &raquo;](scalar_types.md#literal-string)
* [literal-int &raquo;](scalar_types.md#literal-int)
* [array-key &raquo;](scalar_types.md#array-key)
* [numeric &raquo;](scalar_types.md#numeric)
* [scalar &raquo;](scalar_types.md#scalar)
* [Object types &raquo;](object_types.md)
* [object &raquo;](object_types.md#unnamed-objects)
* [object{foo: string} &raquo;](object_types.md#object-properties)
* [Exception, Foo\MyClass and `Foo\MyClass<Bar>` &raquo;](object_types.md#named-objectsmd)
* [Generator](object_types.md#generators)
* [object &raquo;](object_types.md#unnamed-objects)
* [object{foo: string} &raquo;](object_types.md#object-properties)
* [Exception, Foo\MyClass and `Foo\MyClass<Bar>` &raquo;](object_types.md#named-objectsmd)
* [Generator](object_types.md#generators)
* [Array types &raquo;](array_types.md)
* [array&lt;int, string&gt; &raquo;](array_types.md#generic-arrays)
* [non-empty-array &raquo;](array_types.md#non-empty-array)
* [string\[\] &raquo;](array_types.md#phpdoc-syntax)
* [list & non-empty-list &raquo;](array_types.md#lists)
* [list&lt;string&gt; &raquo;](array_types.md#lists)
* [array{foo: int, bar: string} and list{int, string} &raquo;](array_types.md#object-like-arrays)
* [Sealed arrays &raquo;](array_types.md#sealed-object-like-arrays)
* [Unsealed arrays &raquo;](array_types.md#unsealed-object-like-arrays)
* [callable-array &raquo;](array_types.md#callable-arrays)
* [array&lt;int, string&gt; &raquo;](array_types.md#generic-arrays)
* [non-empty-array &raquo;](array_types.md#non-empty-array)
* [string\[\] &raquo;](array_types.md#phpdoc-syntax)
* [list & non-empty-list &raquo;](array_types.md#lists)
* [list&lt;string&gt; &raquo;](array_types.md#lists)
* [array{foo: int, bar: string} and list{int, string} &raquo;](array_types.md#object-like-arrays)
* [Sealed arrays &raquo;](array_types.md#sealed-object-like-arrays)
* [Unsealed arrays &raquo;](array_types.md#unsealed-object-like-arrays)
* [callable-array &raquo;](array_types.md#callable-arrays)
* [Callable types &raquo;](callable_types.md)
* [Value types &raquo;](value_types.md)
* [null &raquo;](value_types.md#null)
* [true, false &raquo;](value_types.md#true-false)
* [6, 7.0, "forty-two" and 'forty two' &raquo;](value_types.md#some_string-4-314)
* [Foo\Bar::MY_SCALAR_CONST &raquo;](value_types.md#regular-class-constants)
* [null &raquo;](value_types.md#null)
* [true, false &raquo;](value_types.md#true-false)
* [6, 7.0, "forty-two" and 'forty two' &raquo;](value_types.md#some_string-4-314)
* [Foo\Bar::MY_SCALAR_CONST &raquo;](value_types.md#regular-class-constants)
* [Utility types &raquo;](utility_types.md)
* [(T is true ? string : bool) &raquo;](conditional_types.md)
* [`key-of<T>` &raquo;](utility_types.md#key-oft)
* [`value-of<T>` &raquo;](utility_types.md#value-oft)
* [`properties-of<T>` &raquo;](utility_types.md#properties-oft)
* [`class-string-map<T as Foo, T>` &raquo;](utility_types.md#class-string-mapt-as-foo-t)
* [`T[K]` &raquo;](utility_types.md#tk)
* [Type aliases &raquo;](utility_types.md#type-aliases)
* [Variable templates &raquo;](utility_types.md#variable-templates)
* [(T is true ? string : bool) &raquo;](conditional_types.md)
* [`key-of<T>` &raquo;](utility_types.md#key-oft)
* [`value-of<T>` &raquo;](utility_types.md#value-oft)
* [`properties-of<T>` &raquo;](utility_types.md#properties-oft)
* [`class-string-map<T as Foo, T>` &raquo;](utility_types.md#class-string-mapt-as-foo-t)
* [`T[K]` &raquo;](utility_types.md#tk)
* [Type aliases &raquo;](utility_types.md#type-aliases)
* [Variable templates &raquo;](utility_types.md#variable-templates)
* [Other types &raquo;](other_types.md)
* [`iterable<TKey, TValue>` &raquo;](other_types.md)
* [void &raquo;](other_types.md)
* [resource &raquo;](other_types.md)
* [closed-resource &raquo;](other_types.md)
* [`iterable<TKey, TValue>` &raquo;](other_types.md)
* [void &raquo;](other_types.md)
* [resource &raquo;](other_types.md)
* [closed-resource &raquo;](other_types.md)
* [Top and bottom types &raquo;](top_bottom_types.md)
* [mixed &raquo;](top_bottom_types.md#mixed)
* [never &raquo;](top_bottom_types.md#never)
* [mixed &raquo;](top_bottom_types.md#mixed)
* [never &raquo;](top_bottom_types.md#never)

View File

@ -7,15 +7,15 @@ _Click on the &raquo; next to each type to view detailed documentation and examp
- [Exception, Foo\MyClass and Foo\MyClass&lt;Bar&gt; &raquo;](#named-objects)
- [Generator](#generators)
### Unnamed objects
## Unnamed objects
`object` are examples of unnamed object types. This type is also a valid type in PHP.
### Named objects
## Named objects
`stdClass`, `Foo`, `Bar\Baz` etc. are examples of named object types. These types are also valid types in PHP.
### Object properties
## Object properties
Psalm supports specifying the properties of an object and their expected types, e.g.:
@ -34,11 +34,11 @@ Optional properties can be denoted by a trailing `?`, e.g.:
/** @param object{optional?: string} */
```
### Generic object types
## Generic object types
Psalm supports using generic object types like `ArrayObject<int, string>`. Any generic object should be typehinted with appropriate [`@template` tags](../templated_annotations.md).
### Generators
## Generators
Generator types support up to four parameters, e.g. `Generator<int, string, mixed, void>`:

View File

@ -20,12 +20,12 @@ _Click on the &raquo; next to each type to view detailed documentation and examp
* [numeric &raquo;](scalar_types.md#numeric)
* [scalar &raquo;](scalar_types.md#scalar)
### scalar
## scalar
`int`, `bool`, `float`, `string` are examples of scalar types. Scalar types represent scalar values in PHP. These types are also valid types in PHP 7.
The type `scalar` is the supertype of all scalar types.
### int-range
## int-range
Integer ranges indicate an integer within a range, specified using generic syntax: `int<x, y>`.
`x` and `y` must be integer numbers.
@ -51,15 +51,15 @@ Represents the type that is the result of a bitmask combination of its parameter
Represents the type that is the result of a bitmask combination of its parameters.
This is the same concept as [`int-mask`](#int-mask1-2-4) but this type is used with a reference to constants in code: `int-mask-of<MyClass::CLASS_CONSTANT_*>` will correspond to `0|1|2|3|4|5|6|7` if there are three constants called `CLASS_CONSTANT_{A,B,C}` with values 1, 2 and 4.
### array-key
## array-key
`array-key` is the supertype (but not a union) of `int` and `string`.
### numeric
## numeric
`numeric` is a supertype of `int` or `float` and [`numeric-string`](#numeric-string).
### class-string, interface-string
## class-string, interface-string
Psalm supports a special meta-type for `MyClass::class` constants, `class-string`, which can be used everywhere `string` can.
@ -79,23 +79,23 @@ function takesClassName(string $s) : void {}
You can also parameterize `class-string` with an object name e.g. [`class-string<Foo>`](value_types.md#regular-class-constants). This tells Psalm that any matching type must either be a class string of `Foo` or one of its descendants.
### trait-string
## trait-string
Psalm also supports a `trait-string` annotation denoting a trait that exists.
### enum-string
## enum-string
Psalm also supports a `enum-string` annotation denote an enum that exists.
### callable-string
## callable-string
`callable-string` denotes a string value that has passed an `is_callable` check.
### numeric-string
## numeric-string
`numeric-string` denotes a string value that has passed an `is_numeric` check.
### literal-string
## literal-string
`literal-string` denotes a string value that is entirely composed of strings in your application.
@ -113,7 +113,7 @@ Strings that don't pass this type check:
- `$_GET["foo"]`
- `"hello " . $_GET["foo"]`
### literal-int
## literal-int
`literal-int` denotes an int value that is entirely composed of literal integers in your application.
@ -128,7 +128,7 @@ Integers that don't pass this type check:
- `(int) $_GET["foo"]`
- `((int)$_GET["foo"]) + 2`
### lowercase-string, non-empty-string, non-empty-lowercase-string
## lowercase-string, non-empty-string, non-empty-lowercase-string
A non empty string, lowercased or both at once.

View File

@ -6,6 +6,7 @@
This is the _top type_ in PHP's type system, and represents a lack of type information. Psalm warns about `mixed` types when the `reportMixedIssues` flag is turned on, or when you're on level 1.
## `never`
It can be aliased to `no-return` or `never-return` in docblocks. Note: it replaced the old `empty` type that used to exist in Psalm
This is the _bottom type_ in PHP's type system. It's used to describe a type that has no possible value. It can happen in multiple cases:

View File

@ -119,7 +119,7 @@ properties with a certain visibility:
- `private-properties-of<T>`
### Limited template support
### Sealed array support
Use final classes if you want to properties-of and get_object_vars to return [sealed arrays](array_types.md#sealed-object-like-arrays):

View File

@ -9,19 +9,19 @@ _Click on the &raquo; next to each type to view detailed documentation and examp
- [6, 7.0, "forty-two" and 'forty two' &raquo;](#some_string-4-314)
- [Foo\Bar::MY_SCALAR_CONST &raquo;](#regular-class-constants)
### null
## null
This is the `null` value, destroyer of worlds. Use it sparingly. Psalm supports you writing `?Foo` to mean `null|Foo`.
### true, false
## true, false
Use of `true` and `false` is also PHPDoc-compatible
### "some_string", 4, 3.14
## "some_string", 4, 3.14
Psalm also allows you specify literal values in types, e.g. `@return "good"|"bad"`
### Regular class constants
## Regular class constants
Psalm allows you to include class constants in types, e.g. `@return Foo::GOOD|Foo::BAD`. You can also specify explicit class strings e.g. `Foo::class|Bar::class`