Skip to content

Conversation

@taion809
Copy link

This bugfix adds a truthiness check in the comment section of MessageGenerator.

Given the following message excerpt from rethinkdb ql2.proto:

// A [Term] is either a piece of data (see **Datum** above), or an operator and
// its operands.  If you have a [Datum], it's stored in the member [datum].  If
// you have an operator, its positional arguments are stored in [args] and its
// optional arguments are stored in [optargs].
//
// A note about type signatures:

The MessageGenerator would build the following array

array (
  0 => 'A [Term] is either a piece of data (see **Datum** above), or an operator and',
  1 => ' its operands.  If you have a [Datum], it\'s stored in the member [datum].  If',
  2 => ' you have an operator, its positional arguments are stored in [args] and its',
  3 => ' optional arguments are stored in [optargs].',
  4 => '',
  5 => ' A note about type signatures:',

When attempting to check and remove a leading space it would throw the following notice for empty strings:

  PHP Notice:  Uninitialized string offset: 0 in /home/vagrant/protoc-gen-php/src/protocolbuffers/generator/php/MessageGenerator.php on line 546
  PHP Stack trace:
  PHP   1. {main}() /home/vagrant/protoc-gen-php/bin/protoc-gen-php:0
  PHP   2. Symfony\Component\Console\Application->run() /home/vagrant/protoc-gen-php/bin/protoc-gen-php:31
  PHP   3. Symfony\Component\Console\Application->doRun() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Application.php:126
  PHP   4. Symfony\Component\Console\Application->doRunCommand() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Application.php:195
  PHP   5. Symfony\Component\Console\Command\Command->run() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Application.php:874
  PHP   6. protocolbuffers\console\command\GenerateCommand->execute() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:253
  PHP   7. protocolbuffers\Compiler->compile() /home/vagrant/protoc-gen-php/src/protocolbuffers/console/command/GenerateCommand.php:29
  PHP   8. protocolbuffers\generator\php\Generator->generate() /home/vagrant/protoc-gen-php/src/protocolbuffers/Compiler.php:204
  PHP   9. protocolbuffers\generator\php\FileGenerator->generateSiblings() /home/vagrant/protoc-gen-php/src/protocolbuffers/generator/php/Generator.php:68
  PHP  10. protocolbuffers\generator\php\MessageGenerator->generate() /home/vagrant/protoc-gen-php/src/protocolbuffers/generator/php/FileGenerator.php:168

…Generator.

Given the following message excerpt from rethinkdb q2.proto:
```protobuf
// A [Term] is either a piece of data (see **Datum** above), or an operator and
// its operands.  If you have a [Datum], it's stored in the member [datum].  If
// you have an operator, its positional arguments are stored in [args] and its
// optional arguments are stored in [optargs].
//
// A note about type signatures:
```

The MessageGenerator would build the following array
```php
array (
  0 => 'A [Term] is either a piece of data (see **Datum** above), or an operator and',
  1 => ' its operands.  If you have a [Datum], it\'s stored in the member [datum].  If',
  2 => ' you have an operator, its positional arguments are stored in [args] and its',
  3 => ' optional arguments are stored in [optargs].',
  4 => '',
  5 => ' A note about type signatures:',
```

When attempting to check and remove a leading space it would throw the following notice for empty strings:
```
  PHP Notice:  Uninitialized string offset: 0 in /home/vagrant/protoc-gen-php/src/protocolbuffers/generator/php/MessageGenerator.php on line 546
  PHP Stack trace:
  PHP   1. {main}() /home/vagrant/protoc-gen-php/bin/protoc-gen-php:0
  PHP   2. Symfony\Component\Console\Application->run() /home/vagrant/protoc-gen-php/bin/protoc-gen-php:31
  PHP   3. Symfony\Component\Console\Application->doRun() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Application.php:126
  PHP   4. Symfony\Component\Console\Application->doRunCommand() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Application.php:195
  PHP   5. Symfony\Component\Console\Command\Command->run() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Application.php:874
  PHP   6. protocolbuffers\console\command\GenerateCommand->execute() /home/vagrant/protoc-gen-php/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:253
  PHP   7. protocolbuffers\Compiler->compile() /home/vagrant/protoc-gen-php/src/protocolbuffers/console/command/GenerateCommand.php:29
  PHP   8. protocolbuffers\generator\php\Generator->generate() /home/vagrant/protoc-gen-php/src/protocolbuffers/Compiler.php:204
  PHP   9. protocolbuffers\generator\php\FileGenerator->generateSiblings() /home/vagrant/protoc-gen-php/src/protocolbuffers/generator/php/Generator.php:68
  PHP  10. protocolbuffers\generator\php\MessageGenerator->generate() /home/vagrant/protoc-gen-php/src/protocolbuffers/generator/php/FileGenerator.php:168
```
@parkr
Copy link

parkr commented Nov 20, 2015

👍

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.

2 participants