Skip to content

Regression: -iquote not understood depending on order w.r.t. -isystem #13638

Closed

Description

@mdriu

Environment

  • OS and Version: Ubuntu 22.04.4 LTS
  • VS Code Version: 1.100.2
  • C/C++ Extension Version: 1.25.3

Bug Summary and Steps to Reproduce

Bug Summary

The -iquote option is not understood by the language service if that comes after an -isystem option, resulting in "#include errors detected" errors.

Additional info

  • Downgrade to an older version (tried with 1.23.5) seems to fix the issue.
  • Ordering the compiler include path options so that -iquote comes before -isystem results in expected behavior.

Steps to reproduce

In a workspace hierarchy as:

$ find . -type f
./.vscode/c_cpp_properties.json
./cpptools_bug_mwe.cpp
./foo/foo.hpp
./compile_commands.json
./bar/bar.hpp

with cpptools_bug_mwe.cpp as:

#include "foo.hpp" // in foo/foo.hpp
#include <bar.hpp> // in bar/bar.hpp

int main()
{
    return 0;
}

with .vscode/c_cpp_properties.json as:

{
    "configurations": [
        {
            "name": "Linux",
            "compileCommands": ["${workspaceFolder}/compile_commands.json"]
        }
    ],
    "version": 4
}

and compile_commands.json as:

[
  {
    "directory": "<path to ws root>",
    "command": "cc -isystem bar -iquote foo cpptools_bug_mwe.cpp -o cpptools_bug_mwe.out",
    "file": "cpptools_bug_mwe.cpp",
    "output": "cpptools_bug_mwe.out"
  }
]

you get:

Image

and the following output from "C/C++ Log Diagnostics": cpp_diagnostics_fail.txt

Expected behavior

When ordering the compiler include options with -iquote before -isystem, i.e., with compile_commands.json as:

[
  {
    "directory": "<path to ws root>",
    "command": "cc -iquote foo -isystem bar cpptools_bug_mwe.cpp -o cpptools_bug_mwe.out",
    "file": "cpptools_bug_mwe.cpp",
    "output": "cpptools_bug_mwe.out"
  }
]

the expected behavior i.e. no include errors is obtained, with the following output from "C/C++ Log Diagnostics": cpp_diagnostics_ok.txt

Configuration and Logs

---------------------- c_cpp_properties.json ---------------------- 
{
    "configurations": [
        {
            "name": "Linux",
            "compileCommands": ["${workspaceFolder}/compile_commands.json"]
        }
    ],
    "version": 4
}

---------------------- compile_commands.json ---------------------- 
[
  {
    "directory": "/home/dev/misc/cpptools_bug_mwe",
    "command": "cc -isystem bar -iquote foo cpptools_bug_mwe.cpp -o cpptools_bug_mwe.out",
    "file": "cpptools_bug_mwe.cpp",
    "output": "cpptools_bug_mwe.out"
  }
]

---------------------- C/C++: Log Diagnostics ---------------------- 

-------- Diagnostics - 5/26/2025, 7:49:44 PM
Version: 1.25.3
Current Configuration:
{
    "name": "Linux",
    "compileCommands": [
        "/home/dev/misc/cpptools_bug_mwe/compile_commands.json"
    ],
    "compilerPathIsExplicit": false,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "intelliSenseModeIsExplicit": false,
    "recursiveIncludesReduceIsExplicit": false,
    "recursiveIncludesPriorityIsExplicit": false,
    "recursiveIncludesOrderIsExplicit": false,
    "compileCommandsInCppPropertiesJson": [
        "${workspaceFolder}/compile_commands.json"
    ],
    "mergeConfigurations": false,
    "recursiveIncludes": {},
    "browse": {
        "limitSymbolsToIncludedHeaders": true
    }
}
Additional Tracked Settings:
{
    "editorTabSize": 4,
    "editorInsertSpaces": true,
    "editorAutoClosingBrackets": "languageDefined",
    "filesEncoding": "utf8",
    "filesAssociations": {},
    "filesExclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/.DS_Store": true,
        "**/Thumbs.db": true
    },
    "filesAutoSaveAfterDelay": false,
    "editorInlayHintsEnabled": true,
    "editorParameterHintsEnabled": true,
    "searchExclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.code-search": true
    },
    "workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.25.3.0
Current database path: /home/dev/.cache/vscode-cpptools/6f7add48ab2294ba00d1a991fbc0d457/.browse.VC.db
Translation Unit Mappings:
[ /home/dev/misc/cpptools_bug_mwe/cpptools_bug_mwe.cpp - source TU]:
Translation Unit Configurations:
[ /home/dev/misc/cpptools_bug_mwe/cpptools_bug_mwe.cpp ]
    Process ID: 451790
    Memory Usage: 18 MB
    Compiler Path: /usr/bin/cc
    Include paths:
        system include (isystem): /home/dev/misc/cpptools_bug_mwe/bar
        system include: /usr/include/c++/11
        system include: /usr/include/x86_64-linux-gnu/c++/11
        system include: /usr/include/c++/11/backward
        system include: /usr/lib/gcc/x86_64-linux-gnu/11/include
        system include: /usr/local/include
        system include: /usr/include/x86_64-linux-gnu
        system include: /usr/include
    Standard Version: c++17
    IntelliSense Mode: linux-gcc-x64
    Other Flags:
        --g++
        --gnu_version=110400
    compile_commands.json entry:
        directory: /home/dev/misc/cpptools_bug_mwe
        file: /home/dev/misc/cpptools_bug_mwe/cpptools_bug_mwe.cpp
        command: cc -isystem bar -iquote foo cpptools_bug_mwe.cpp -o cpptools_bug_mwe.out
        output: cpptools_bug_mwe.out
Total Memory Usage: 18 MB
Browse Paths from compile_commands.json, from workspace folder: /home/dev/misc/cpptools_bug_mwe
    /home/dev/misc/cpptools_bug_mwe
    /home/dev/misc/cpptools_bug_mwe/bar
    /home/dev/misc/cpptools_bug_mwe/foo
    /usr/include
    /usr/include/c++/11
    /usr/include/c++/11/backward
    /usr/include/x86_64-linux-gnu
    /usr/include/x86_64-linux-gnu/c++/11
    /usr/lib/gcc/x86_64-linux-gnu/11/include
    /usr/local/include

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 4844

Other Extensions

No response

Additional context

No response

Activity

  1. moved this from Todo to In progress in cpptoolson May 27, 2025
  2. moved this from In progress to Pull Request in cpptoolson Jun 4, 2025
  3. moved this from Pull Request to Done in cpptoolson Jun 4, 2025
  4. locked and limited conversation to collaborators on Aug 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Feature: ConfigurationAn issue related to configuring the extension or IntelliSenseLanguage ServicebugfixedCheck the Milestone for the release in which the fix is or will be available.regressionA bug that didn't exist in a previous release

Type

Projects

  • Status
    Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions