Skip to content

Commit

Permalink
fix #638
Browse files Browse the repository at this point in the history
  • Loading branch information
jeff-hykin committed Jul 5, 2024
1 parent 683e822 commit ec459bb
Show file tree
Hide file tree
Showing 9 changed files with 429 additions and 13 deletions.
2 changes: 1 addition & 1 deletion autogenerated/cpp.embedded.macro.tmLanguage.json

Large diffs are not rendered by default.

117 changes: 116 additions & 1 deletion autogenerated/cpp.tmLanguage.json
Original file line number Diff line number Diff line change
Expand Up @@ -6242,7 +6242,7 @@
]
},
"misc_keywords": {
"match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:constinit|requires|typedef|concept|export|module)(?!\\w))",
"match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:constinit|typedef|concept|export|module)(?!\\w))",
"captures": {
"1": {
"patterns": [
Expand Down Expand Up @@ -11581,6 +11581,82 @@
"name": "meta.qualified_type.cpp"
},
"qualifiers_and_specifiers_post_parameters": {
"patterns": [
{
"begin": "((?<!\\w)requires(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
"end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.other.functionlike.cpp keyword.other.requires.cpp"
},
"2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
"3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"4": {
"name": "comment.block.cpp"
},
"5": {
"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
},
"6": {
"name": "punctuation.section.arguments.begin.bracket.round.requires.cpp"
}
},
"endCaptures": {
"0": {
"name": "punctuation.section.arguments.end.bracket.round.requires.cpp"
}
},
"contentName": "meta.arguments.requires",
"patterns": [
{
"include": "#evaluation_context"
}
]
},
{
"match": "((?:(?:(?:(?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?<!\\w)(?:override|volatile|noexcept|final|const)(?!\\w))+)(?=\\s*(?:\\{|;|\\n|\\r|=))",
"captures": {
"1": {
"patterns": [
{
"match": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:override|volatile|noexcept|final|const)(?!\\w))",
"captures": {
"1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
"2": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"3": {
"name": "comment.block.cpp"
},
"4": {
"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
},
"5": {
"name": "storage.modifier.specifier.functional.post-parameters.$5.cpp"
}
}
}
]
}
}
}
]
},
"qualifiers_and_specifiers_post_parameters_inline": {
"match": "((?:(?:(?:(?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?<!\\w)(?:override|volatile|noexcept|final|const)(?!\\w))+)(?=\\s*(?:\\{|;|\\n|\\r|=))",
"captures": {
"1": {
Expand Down Expand Up @@ -12232,6 +12308,45 @@
}
]
},
"requires_keyword": {
"begin": "((?<!\\w)requires(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
"end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.other.functionlike.cpp keyword.other.requires.cpp"
},
"2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
"3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"4": {
"name": "comment.block.cpp"
},
"5": {
"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
},
"6": {
"name": "punctuation.section.arguments.begin.bracket.round.requires.cpp"
}
},
"endCaptures": {
"0": {
"name": "punctuation.section.arguments.end.bracket.round.requires.cpp"
}
},
"contentName": "meta.arguments.requires",
"patterns": [
{
"include": "#evaluation_context"
}
]
},
"scope_resolution": {
"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/)|(?:\"(?:[^\"]*|\\\\\")\")|(?:'(?:[^']*|\\\\')')|\\g<3>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+",
"captures": {
Expand Down
5 changes: 5 additions & 0 deletions autogenerated/cpp_scopes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,13 @@ keyword.other.default.function.cpp
keyword.other.delete.constructor.cpp
keyword.other.delete.destructor.cpp
keyword.other.delete.function.cpp
keyword.other.functionlike.cpp
keyword.other.namespace.alias.cpp
keyword.other.namespace.definition.cpp
keyword.other.namespace.directive.cpp
keyword.other.operator.overload.cpp
keyword.other.parameter.direction.$0.cpp
keyword.other.requires.cpp
keyword.other.static_assert.cpp
keyword.other.suffix.literal.built-in.floating-point.cpp
keyword.other.suffix.literal.built-in.integer.cpp
Expand Down Expand Up @@ -166,6 +168,7 @@ meta.arguments.operator.noexcept
meta.arguments.operator.sizeof
meta.arguments.operator.sizeof.variadic
meta.arguments.operator.typeid
meta.arguments.requires
meta.asm.cpp
meta.banner.character.cpp
meta.binding.cpp
Expand Down Expand Up @@ -308,6 +311,7 @@ punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp
punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp
punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp
punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp
punctuation.section.arguments.begin.bracket.round.requires.cpp
punctuation.section.arguments.begin.bracket.round.static_assert.cpp
punctuation.section.arguments.end.bracket.curly.initializer.cpp
punctuation.section.arguments.end.bracket.round.decltype.cpp
Expand All @@ -321,6 +325,7 @@ punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp
punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp
punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp
punctuation.section.arguments.end.bracket.round.operator.typeid.cpp
punctuation.section.arguments.end.bracket.round.requires.cpp
punctuation.section.arguments.end.bracket.round.static_assert.cpp
punctuation.section.attribute.begin.cpp
punctuation.section.attribute.end.cpp
Expand Down
12 changes: 6 additions & 6 deletions language_examples/#396.spec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,14 @@
- keyword.operator.and
- source: requires
scopes:
- keyword.other.functionlike
- keyword.other.requires
- source: (
scopesBegin:
- meta.parens
scopes:
- punctuation.section.parens.begin.bracket.round
- punctuation.section.arguments.begin.bracket.round.requires
- source: From
scopesBegin:
- meta.arguments.requires
scopes:
- entity.name.function.call
- source: (
Expand All @@ -123,12 +124,11 @@
scopes:
- punctuation.section.parens.end.bracket.round
scopesEnd:
- meta.arguments.requires
- meta.parens
- source: )
scopes:
- punctuation.section.parens.end.bracket.round
scopesEnd:
- meta.parens
- punctuation.section.arguments.end.bracket.round.requires
- source: '{'
scopesBegin:
- meta.block
Expand Down
16 changes: 16 additions & 0 deletions language_examples/638.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
template <int n>
struct S{
int foo() requires(n == 2)
{
return 2;
}


int foo() requires(n < 2)
{
return 2;
}

private:
int b;
};
Loading

0 comments on commit ec459bb

Please sign in to comment.