diff --git a/README.md b/README.md index 9c5e78c..628069d 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,11 @@ The goal is to produce idiomatic, maintainable Go code as part of a one-off conv [X] `null` -> `nil` [X] Consts and `define()` - [X] Magic constants (`__LINE__`,`__FILE__` etc) + - [ ] Predefined constants (`PHP_VERSION`, `PHP_EOL`, `PHP_OS`, `PHP_INT_MAX` etc) [ ] `isset`/`unset` [ ] `instanceof` +[X] Ternary expressions + - Implemented as inline closure [X] `die` [X] `try`/`catch`/`finally` - [X] Implement using err checks, not panic/recover @@ -91,23 +94,23 @@ The goal is to produce idiomatic, maintainable Go code as part of a one-off conv - [ ] Type declarations for literals (string, slice/map with constant initializer, etc) - [ ] Convert known PHP typenames to Go equivalents - [ ] Parse extra types from phpdoc blocks -[ ] Hoisting pass for rvalue expressions +[X] Hoisting pass for rvalue expressions + - [X] Preincrement statements - [ ] Behaviour of function calls in rvalue cases where err cannot be checked - [ ] Assignment expressions - [ ] Alternately - we can support the form `if foo := bar(); foo {` - - [ ] Ternarys [ ] Simple standard library transformations - [X] common string/array functions - [ ] More string/array functions - [ ] Top 100 from https://www.exakat.io/top-100-php-functions/ - - [ ] substr -> slice index operator - - This has the same value semantics for string literals, but not variables + - [X] substr -> slice index operator + - This has the same value semantics for ~~string literals, but not variables~~ all cases - [ ] error_reporting(E_ALL) --> just remove it - [ ] ini_set('display_errors', 'On') --> remove it when the parameter is known [ ] Elide error return for functions that cannot throw - ?? Could be a standalone Go refactoring tool -### Wishlist +### Moonshots [ ] Extended library/environment transformations - [ ] Standard library transformations