PHP 8 Update
- nullsafe operator (?->)
- Remove (real) cast
- Named arguments
- Remove (unset) cast
- Remove {} access
- match expression
- Union types in type hints and static typehint
- Block catch without variable
- Trailing comma in parameter lists
- throw can be used as an expression
- Concatenation precedence
- Declaring properties in the constructor
- Attributes
- Names in the namespace are treated as a single token
- Trailing comma in closure use list
- Check that ::class on object works
- Deferencable changes and arbitrary expressions in new/instanceof
26 lines
371 B
Go
26 lines
371 B
Go
package php8
|
|
|
|
type NewLines struct {
|
|
data []int
|
|
}
|
|
|
|
func (nl *NewLines) Append(p int) {
|
|
if len(nl.data) == 0 || nl.data[len(nl.data)-1] < p {
|
|
nl.data = append(nl.data, p)
|
|
}
|
|
}
|
|
|
|
func (nl *NewLines) GetLine(p int) int {
|
|
line := len(nl.data) + 1
|
|
|
|
for i := len(nl.data) - 1; i >= 0; i-- {
|
|
if p < nl.data[i] {
|
|
line = i + 1
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
|
|
return line
|
|
}
|