TypeScript SourceFileObject.getNamedDeclarations 缺少方法之前的声明

gwo2fgha  于 6个月前  发布在  TypeScript
关注(0)|答案(7)|浏览(63)

我正在对以下代码片段执行SourceFileObject.getNamedDeclarations操作:

module Mankala {
  export class Rectangle {
    x: number;
    y: number;
    width: number;
    height: number;
    square() {
    }
  }
}

这返回一个缺少属性'height'的数组。问题出在
SourceFileObject.prototype.getNamedDeclarations

case 125 /* Method */:
             var functionDeclaration = node;
             if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) {
             var lastDeclaration = namedDeclarations.length > 0 ? namedDeclarations[namedDeclarations.length - 1] : undefined;
                                if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) {
                                    if (functionDeclaration.body && !lastDeclaration.body) {
                                        namedDeclarations[namedDeclarations.length - 1] = functionDeclaration;
                                    }
                                }

functionDeclaration.symbol === lastDeclaration.symbol为true,因为两个符号都是未定义的。然后,属性'height'被替换为方法'square'。

exdqitrt

exdqitrt1#

感谢您发现这个问题。如果能得到公关支持,将不胜感激。

zysjyyx4

zysjyyx42#

Mohamed,你还需要我这边提供什么额外的信息吗?
不确定你所说的“PR”是什么意思...
2015年2月25日星期三,下午6:45,Mohamed Hegazy notifications@github.com 写道:
感谢你发现这个问题。如果能提供PR就更好了。

直接回复此电子邮件或在GitHub上查看

2137 (评论)

8gsdolmq

8gsdolmq3#

A Pull Request with the fix; since you have done the work to find the root cause, I thought you might be interested in contributing the fix.

50pmv0ei

50pmv0ei4#

我认为没有办法为这个写测试,因为我相信NavigateTo是语义化的,但我会稍后修复。

2cmtqfgy

2cmtqfgy5#

实际上,如果我做出这个改变,我相信你最终会在结果中得到每一个重载。这对于语言服务来说不是问题,但在你的场景中仍然会是一个问题。
@mhegazy 你有什么看法?

sd2nnvve

sd2nnvve6#

我无法在最新版本的代码中复现原始问题。@DanielRosenwasser,我不确定我是否理解你的问题。

jjhzyzn0

jjhzyzn07#

这个功能期望绑定已经发生。可能正确的修复方法是在这个函数中始终调用bindSourceFile

相关问题