Skip to content

Exception while display C/C++ symbols in Project Explorer #360

@ghentschke

Description

@ghentschke

When a user wants to display the symbols of a C/C++ header or source file in the Project Explorer by clicking on the expand icon:
image
the icon vanishes:
image
and no children (symbols of the file) will be displayed.
Reason is this exception:

!ENTRY org.eclipse.lsp4e 4 0 2024-07-26 14:09:22.006
!MESSAGE Error occured during evaluation of enablement expression
!STACK 1
org.eclipse.core.runtime.CoreException: Error evaluating Property [org.eclipse.cdt.lsp.server.enable.hasLanguageServer, type=class java.net.URI, tester=org.eclipse.cdt.lsp.internal.server.HasLanguageServerPropertyTester@50017595]
	at org.eclipse.core.internal.expressions.Property.test(Property.java:68)
	at org.eclipse.core.expressions.TestExpression.evaluate(TestExpression.java:107)
	at org.eclipse.core.expressions.CompositeExpression.evaluateAnd(CompositeExpression.java:54)
	at org.eclipse.core.expressions.WithExpression.evaluate(WithExpression.java:84)
	at org.eclipse.core.expressions.ReferenceExpression.evaluate(ReferenceExpression.java:72)
	at org.eclipse.lsp4e.enablement.EnablementTester.evaluate(EnablementTester.java:90)
	at org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition.isExtensionEnabled(ContentTypeToLanguageServerDefinition.java:52)
	at org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition.isEnabled(ContentTypeToLanguageServerDefinition.java:37)
	at org.eclipse.lsp4e.LanguageServiceAccessor.getLSWrappers(LanguageServiceAccessor.java:303)
	at org.eclipse.lsp4e.LanguageServers$LanguageServerDocumentExecutor.getServers(LanguageServers.java:296)
	at org.eclipse.lsp4e.LanguageServers.executeOnServers(LanguageServers.java:437)
	at org.eclipse.lsp4e.LanguageServers.computeFirst(LanguageServers.java:172)
	at org.eclipse.cdt.lsp.internal.ui.navigator.SymbolsManager.refreshTreeContentFromLS(SymbolsManager.java:247)
	at org.eclipse.cdt.lsp.internal.ui.navigator.SymbolsManager.getCompileUnitElements(SymbolsManager.java:223)
	at org.eclipse.cdt.lsp.internal.ui.navigator.SymbolsManager.fetchDeferredChildren(SymbolsManager.java:129)
	at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:215)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.IllegalArgumentException: Attempted to beginRule: P/MyCmake, does not match outer scope rule: L/MyCmake/MyCmake.cpp
	at org.eclipse.core.runtime.Assert.isLegal(Assert.java:68)
	at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:144)
	at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:416)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:88)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:343)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:124)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2401)
	at org.eclipse.core.internal.resources.File.create(File.java:129)
	at org.eclipse.core.internal.resources.File.create(File.java:203)
	at org.eclipse.cdt.lsp.clangd.utils.ClangFormatUtils.createFileFromResource(ClangFormatUtils.java:57)
	at org.eclipse.cdt.lsp.clangd.utils.ClangFormatUtils.createClangFormatFile(ClangFormatUtils.java:48)
	at org.eclipse.cdt.lsp.clangd.internal.config.ClangdLanguageServerProvider.preFileOpening(ClangdLanguageServerProvider.java:78)
	at org.eclipse.cdt.lsp.internal.server.HasLanguageServerPropertyTester.preFileOpening(HasLanguageServerPropertyTester.java:99)
	at org.eclipse.cdt.lsp.internal.server.HasLanguageServerPropertyTester.test(HasLanguageServerPropertyTester.java:62)
	at org.eclipse.core.internal.expressions.Property.test(Property.java:65)
	... 16 more
!SUBENTRY 1 org.eclipse.core.expressions 4 0 2024-07-26 14:09:22.006
!MESSAGE Error evaluating Property [org.eclipse.cdt.lsp.server.enable.hasLanguageServer, type=class java.net.URI, tester=org.eclipse.cdt.lsp.internal.server.HasLanguageServerPropertyTester@50017595]
!STACK 0
java.lang.IllegalArgumentException: Attempted to beginRule: P/MyCmake, does not match outer scope rule: L/MyCmake/MyCmake.cpp
	at org.eclipse.core.runtime.Assert.isLegal(Assert.java:68)
	at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:144)
	at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:416)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:88)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:343)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:124)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2401)
	at org.eclipse.core.internal.resources.File.create(File.java:129)
	at org.eclipse.core.internal.resources.File.create(File.java:203)
	at org.eclipse.cdt.lsp.clangd.utils.ClangFormatUtils.createFileFromResource(ClangFormatUtils.java:57)
	at org.eclipse.cdt.lsp.clangd.utils.ClangFormatUtils.createClangFormatFile(ClangFormatUtils.java:48)
	at org.eclipse.cdt.lsp.clangd.internal.config.ClangdLanguageServerProvider.preFileOpening(ClangdLanguageServerProvider.java:78)
	at org.eclipse.cdt.lsp.internal.server.HasLanguageServerPropertyTester.preFileOpening(HasLanguageServerPropertyTester.java:99)
	at org.eclipse.cdt.lsp.internal.server.HasLanguageServerPropertyTester.test(HasLanguageServerPropertyTester.java:62)
	at org.eclipse.core.internal.expressions.Property.test(Property.java:65)
	at org.eclipse.core.expressions.TestExpression.evaluate(TestExpression.java:107)
	at org.eclipse.core.expressions.CompositeExpression.evaluateAnd(CompositeExpression.java:54)
	at org.eclipse.core.expressions.WithExpression.evaluate(WithExpression.java:84)
	at org.eclipse.core.expressions.ReferenceExpression.evaluate(ReferenceExpression.java:72)
	at org.eclipse.lsp4e.enablement.EnablementTester.evaluate(EnablementTester.java:90)
	at org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition.isExtensionEnabled(ContentTypeToLanguageServerDefinition.java:52)
	at org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition.isEnabled(ContentTypeToLanguageServerDefinition.java:37)
	at org.eclipse.lsp4e.LanguageServiceAccessor.getLSWrappers(LanguageServiceAccessor.java:303)
	at org.eclipse.lsp4e.LanguageServers$LanguageServerDocumentExecutor.getServers(LanguageServers.java:296)
	at org.eclipse.lsp4e.LanguageServers.executeOnServers(LanguageServers.java:437)
	at org.eclipse.lsp4e.LanguageServers.computeFirst(LanguageServers.java:172)
	at org.eclipse.cdt.lsp.internal.ui.navigator.SymbolsManager.refreshTreeContentFromLS(SymbolsManager.java:247)
	at org.eclipse.cdt.lsp.internal.ui.navigator.SymbolsManager.getCompileUnitElements(SymbolsManager.java:223)
	at org.eclipse.cdt.lsp.internal.ui.navigator.SymbolsManager.fetchDeferredChildren(SymbolsManager.java:129)
	at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:215)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

Steps to reproduce:

  1. Create a C/C++ project with no .clang-format file in the project root folder.
  2. Ensure that the project contains a C/C++ source file.
  3. Ensure that no C/C++ file is opened in the new LSP based editor.
  4. Enable the LSP Editor for this project
  5. Try to Expand the children of the C/C++ project as described above

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions