对于它的价值,以下内容:
public class Foo;
错误:Syntax error, insert "ClassBody" to complete ClassBodyDeclarations
public enum Foo;
错误:Syntax error, insert "EnumBody" to complete ClassBodyDeclarations
public interface Foo;
错误Syntax error, insert "InterfaceBody" to complete ClassBodyDeclarations
无论如何,我认为会发生什么,在 this
org.eclipse.jdt.internal.compiler.parser.Parser.consumeEnumConstantHeader()
中,当它使用此代码出现解析错误时,它会尝试恢复:
if(this.currentToken == TokenNameSEMICOLON) {
RecoveredType currentType = currentRecoveryType();
if(currentType != null) {
currentType.insideEnumConstantPart = false;
}
}
所以它正确地判断出我们不在一个枚举中,所以我们得到一个像上面这样的错误,但它没有意识到我们甚至不知道它是否是一个枚举。你可以在这里查看源代码:
换句话说,这可能是 Eclipse 团队在添加 Enumerations 时引入的一个错误,它的处理方式与其他一些标记略有不同,这导致它以不同的方式被恢复,因此出现在编译器错误中。