我正在对以下代码片段执行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'。
7条答案
按热度按时间exdqitrt1#
感谢您发现这个问题。如果能得到公关支持,将不胜感激。
zysjyyx42#
Mohamed,你还需要我这边提供什么额外的信息吗?
不确定你所说的“PR”是什么意思...
2015年2月25日星期三,下午6:45,Mohamed Hegazy notifications@github.com 写道:
感谢你发现这个问题。如果能提供PR就更好了。
—
直接回复此电子邮件或在GitHub上查看
2137 (评论)
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.
50pmv0ei4#
我认为没有办法为这个写测试,因为我相信NavigateTo是语义化的,但我会稍后修复。
2cmtqfgy5#
实际上,如果我做出这个改变,我相信你最终会在结果中得到每一个重载。这对于语言服务来说不是问题,但在你的场景中仍然会是一个问题。
@mhegazy 你有什么看法?
sd2nnvve6#
我无法在最新版本的代码中复现原始问题。@DanielRosenwasser,我不确定我是否理解你的问题。
jjhzyzn07#
这个功能期望绑定已经发生。可能正确的修复方法是在这个函数中始终调用
bindSourceFile
。