我在一些 e 文件中有以下代码:
<'
package my_package;
struct packet {
foo() is {
print "Hello";
};
};
'>
我的顶级文件导入了几个文件,包括这个文件,并且在某些时候它调用了 foo() 方法。
现在,我错误地添加了以下代码:
struct packet {};
在其他文件中(我只是忘记了我已经有一个名为“packet”的结构),它是由 top 在上述文件之前导入的。
奇怪的是,当我尝试加载顶部文件时,我收到了这个错误:
*** Error: 'p' (of type main::packet) does not have 'foo()' method.
at line 9 in top.e
p.foo();
但是为什么它没有在定义 foo() 的文件上失败呢?
它有一个数据包的结构声明,但数据包已经(错误地)在早期文件中声明,那么为什么它没有给出重复类型名称错误呢?是否允许有两个同名的结构?