Codeception / Codeception/AspectMock

Parse Error

未关闭
#134 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
PHP
星标
784
派生
132
PR 合并指标
30 天内没有已合并 PR

描述

Case:
**Framework:** Yii2 2.0.11.2
**PHP:** 7.0.10
**AspeckMock** 2.0.1
**info** On ver. 1.0.0 works fine

AspectMock wrong parsing, convert and write to temporary storage this piece of code:

**original code**
```php
protected function loadConfiguration($configFile)
{
$this->stdout("Loading configuration from '{$configFile}'...\n");
foreach (require($configFile) as $name => $value) {
if (property_exists($this, $name) || $this->canSetProperty($name)) {
$this->$name = $value;
} else {
throw new Exception("Unknown configuration option: $name");
}
}

$this->getAssetManager(); // check if asset manager configuration is correct
}
```

**after convert with AspeckMock**
```php
protected function loadConfiguration($configFile)
{ if (($__am_res = __amock_before($this, __CLASS__, __FUNCTION__, array($configFile), false)) !== __AM_CONTINUE__) return $__am_res;
$this->stdout("Loading configuration from '{$configFile}'...\n");
foreach (require \Go\Instrument\Transformer\FilterInjectorTransformer::rewrite(($configFile) as $name => $value, '')) {
if (property_exists($this, $name) || $this->canSetProperty($name)) {
$this->$name = $value;
} else {
throw new Exception("Unknown configuration option: $name");
}
}

$this->getAssetManager(); // check if asset manager configuration is correct
}
```

**Problem with parse:**
```
foreach (require \Go\Instrument\Transformer\FilterInjectorTransformer::rewrite(($configFile) as $name => $value, ''))
```

**Error**
```
Exception 'ParseError' with message 'syntax error, unexpected 'as' (T_AS), expecting ',' or ')''
```

贡献指南

这个仓库没有索引到贡献指南

调研方向

使用报告中的 loadConfiguration($configFile) 示例和 PHP 7.0.10 重现该转换,然后检查生成代码中提到的入口点 FilterInjectorTransformer::rewrite。转换后的 foreach/require 表达式能够成功解析并保留原始迭代行为时,修复就完成了。

由索引模型根据 Issue 内容生成。

评估

技术栈
php
领域
testing
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。