Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Language server doesn't support boards of the "megaAVR" architecture #31

Open
per1234 opened this issue Feb 25, 2021 · 0 comments
Open
Assignees
Labels
criticality: medium Of moderate impact topic: language server Related to the Arduino Language Server

Comments

@per1234
Copy link
Contributor

per1234 commented Feb 25, 2021

Describe the problem

The features that rely on the language server (autocomplete, editor hover, "Go To Definition", "Go To Symbol", "Peek Definition") don't work when a board from the Arduino "megaAVR" architecture (megaAVR 0-series, tinyAVR 0-series and 1-series) (e.g., Nano Every, Uno WiFi Rev2) is selected.

To reproduce

  1. Use the Arduino IDE "Boards Manager" to install the "Arduino megaAVR Boards" platform, if not already installed.
  2. Select File > New from the Arduino IDE menus.
  3. Select Tools > Board > Arduino megaAVR Boards > Nano Every from the Arduino IDE menus.
  4. Hover the mouse pointer over setup in the sketch code code
    🐛 No "hover" popup appears.
  5. Right click on setup()
  6. Select "Go To Definition" from the context menu.
    🐛 A "No definition found for 'setup'" tooltip appears.
  7. Right click on setup()
  8. Select "Go To Symbol" from the context menu.
    🐛 The command palette shows "No editor symbols"
  9. Right click on setup()
  10. Select "Peek > Peek Definition" from the context menu.
    🐛 A "No definition found for 'setup'" tooltip appears.
  11. Type the following code inside the setup function:
    pinMo
  12. Press Ctrl+Space
    🐛 The "suggest" interface shows "No suggestions."

Expected behavior

Language server features to work on megaAVR boards just like on boards of other architectures.

Arduino IDE version

Original report

2.0.0-beta.2-snapshot.f9730ab

Last verified with

2.0.0-rc9.3

Operating system

Windows, Linux

Operating system version

Windows 10, Ubuntu 20.04

Additional context

From inols-clangd-err.log:

V[12:54:19.163] Ignored diagnostic. unknown target CPU 'atmega4809'
V[12:54:19.163] Ignored diagnostic. valid target CPU values are: avr1, avr2, avr25, avr3, avr31, avr35, avr4, avr5, avr51, avr6, avrxmega1, avrxmega2, avrxmega3, avrxmega4, avrxmega5, avrxmega6, avrxmega7, avrtiny, at90s1200, attiny11, attiny12, attiny15, attiny28, at90s2313, at90s2323, at90s2333, at90s2343, attiny22, attiny26, at86rf401, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534, at90s8535, ata5272, attiny13, attiny13a, attiny2313, attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84, attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny441, attiny461, attiny461a, attiny841, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88, attiny828, at43usb355, at76c711, atmega103, at43usb320, attiny167, at90usb82, at90usb162, ata5505, atmega8u2, atmega16u2, atmega32u2, attiny1634, atmega8, ata6289, atmega8a, ata6285, ata6286, atmega48, atmega48a, atmega48pa, atmega48pb, atmega48p, atmega88, atmega88a, atmega88p, atmega88pa, atmega88pb, atmega8515, atmega8535, atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, ata5790, ata5795, atmega16, atmega16a, atmega161, atmega162, atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa, atmega168pb, atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega32a, atmega323, atmega324a, atmega324p, atmega324pa, atmega324pb, atmega325, atmega325a, atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328, atmega328p, atmega328pb, atmega329, atmega329a, atmega329p, atmega329pa, atmega3290, atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645, atmega645a, atmega645p, atmega649, atmega649a, atmega649p, atmega6450, atmega6450a, atmega6450p, atmega6490, atmega6490a, atmega6490p, atmega64rfr2, atmega644rfr2, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at90scr100, at94k, m3000, atmega128, atmega128a, atmega1280, atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2, atmega1284rfr2, at90can128, at90usb1286, at90usb1287, atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2, atxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4, atxmega32e5, atxmega16e5, atxmega8e5, atxmega32x1, atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, atxmega64d3, atxmega64d4, atxmega64a1, atxmega64a1u, atxmega128a3, atxmega128a3u, atxmega128b1, atxmega128b3, atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega192c3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3, atxmega384d3, atxmega128a1, atxmega128a1u, atxmega128a4u, attiny4, attiny5, attiny9, attiny10, attiny20, attiny40, attiny102, attiny104
E[12:54:19.163] Indexing C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\megaavr\1.8.7\cores\arduino\WInterrupts.cpp failed: Couldn't build compiler instance

The equivalent error occurs when using boards with other microcontrollers in this architecture family.


This is actually a deficiency in lower level tools (clangd via Arduino Language Server), and not actually anything to do with the Arduino IDE 2.x code base. So in fact the issue is off topic for this repository, but it was decided that an issue should be created here for the sake of documenting it in a place that would be easily found by Arduino IDE 2.x users.

The deficiency is also tracked in the Arduino Language Server repository at arduino/arduino-language-server#112

Updates

  • tinyAVR 0-series and 1-series was added by llvm/llvm-project@b0d4d96
    • Arduino IDE was updated to use the clangd version with support via a59e0da
  • megaAVR 0-series support appears to have been added to clangd, released in LLVM 15.0.0: llvm/llvm-project@b62ea9b
    • Arduino IDE has not yet been updated to use the clangd version with support.

Additional reports

@per1234 per1234 added type: bug priority: high Resolution is a high priority labels Feb 25, 2021
@ubidefeo ubidefeo added priority: medium Resolution is a medium priority and removed priority: high Resolution is a high priority labels Mar 19, 2021
@cmaglie cmaglie removed the type: bug label Sep 16, 2021
@rsora rsora added type: imperfection Perceived defect in any part of project topic: language server Related to the Arduino Language Server labels Sep 22, 2021
@rsora rsora pinned this issue Oct 14, 2021
@rsora rsora added criticality: medium Of moderate impact and removed priority: medium Resolution is a medium priority type: imperfection Perceived defect in any part of project labels Nov 2, 2021
@arduino arduino deleted a comment from Paul3899 Nov 14, 2021
@stevisco stevisco unpinned this issue Jan 5, 2022
@rsora rsora assigned 91volt and unassigned giannicolab Jan 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
criticality: medium Of moderate impact topic: language server Related to the Arduino Language Server
Projects
None yet
Development

No branches or pull requests

7 participants