microsoft / microsoft/vscode-cpptools

Add IntelliSense modes for MPLAB (XC8/XC16/XC32) compilers

Open
#8,533 28 comments 22 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Feature Request Feature: Configuration Language Service
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Bug type: Language Service

uint16_t type unrecognized with xc16 compiler

  • Ubuntu 20.04 under WSL2 on Windows 10:
  • VS Code Version: Version: 1.63.0 (user setup)
    Commit: 7db1a2b88f7557e0a43fec75b6ba7e50b3e9f77e
    Date: 2021-12-07T06:26:56.179Z
    Electron: 13.5.2
    Chromium: 91.0.4472.164
    Node.js: 14.16.0
    V8: 9.1.269.39-electron.0
    OS: Windows_NT x64 10.0.19044
  • C/C++ Extension Version: v1.8.0-insiders2
  • Other extensions you installed (and if the issue persists after disabling them): https://gist.github.com/DanieleNardi/d7201e044a00744a8f63dbb900113c09#file-extensions-json
  • If using SSH remote, specify OS of remote machine: n/a
  • A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).

It's a small prject developed with Microchip's dsPIC33EP128MC502.
An error message as follows appears when a uint16_t type is used:

"[{
	"resource": "main.c",
	"owner": "C/C++",
	"code": "757",
	"severity": 8,
	"message": "variable \"uint16_t\" is not a type name",
	"source": "C/C++",
	"startLineNumber": 230,
	"startColumn": 1,
	"endLineNumber": 230,
	"endColumn": 2
}]

Error squiggle only under the 'u' of uint16_t.
Hover window shows correct definition of type.
CTRL+Click works, redirect to compiler-specific stdint.h, where uint16_t is defined as follows:

#ifndef uint16_t
typedef unsigned int uint16_t;
#define uint16_t uint16_t
#define UINT16_MAX (65535U)
#endif

Other types defined in stdint.h in the same way work fine.
Simple call to compiler (from Microchip's IDE or command line) doesn't show this error.

Steps to reproduce
Create c file, .c extension, including stdint.h.
Declare a uint16_t variable in .c file.

Expected behavior
No error at all.

Code sample and logs

  • Code sample

  • Configurations in c_cpp_properties.json

"configurations": [
        {
            "name": "Application",
            "includePath": [
                "${workspaceFolder}/ApplicationFW",
                "/xc16/include",
                "/opt/microchip/xc16/v1.70/include",
                "/xc16/include/lega-c",
                "/xc16/support/generic/h"
            ],
            "defines": [],
            "compilerPath": "/xc16/bin/xc16-gcc",
            "cStandard": "c99",
            "intelliSenseMode": "linux-gcc-x86",
            "compilerArgs": [
                "-c",
                "-include ${workspaceFolder}/ApplicationFW/Microchip/packs/dsPIC33E-GM-GP-MC-GU-MU_DFP/1.3.85/xc16/support/dsPIC33E/h/p33EP128MC502.h",
                "-mcpu=33EP128MC502",
                "-MP",
                "-MMD",
                "-mno-eds-warn",
                "-g",
                "-omf=elf",
                "-legacy-libc",
                "-O0",
                "-msmart-io=1",
                "-Wall",
                "-msfr-warn=off",
                "-mdfp=\"${workspaceFolder}/ApplicationFW/Microchip/packs/dsPIC33E-GM-GP-MC-GU-MU_DFP/1.3.85/xc16\""
            ]

        }
    ],
    "version": 4

Screenshots

Additional context

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the reported c_cpp_properties.json configuration, especially compilerPath, compilerArgs, and intelliSenseMode, and reproduce the uint16_t diagnostic with an XC16 project. Review the C/C++ language service entry points for compiler-specific IntelliSense modes; done means XC8, XC16, and XC32 configurations recognize compiler-provided types without the reported false error.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, vscode
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.