Menu

#907 Observed C++11 deficiencies

None
open-accepted
nobody
v1.24
5
2015-02-14
2012-10-20
Lex Trotman
No

This report is a grab bag of some C++11 things that need fixing so they don't get lost, alpha numbered to refer to as they are fixed. The list is not intended to be exhaustive as I don't use C++11 in anger yet. There are some non-C++11 specific ones I identified as well, some of these are already known but not well bug reported.

  1. [a77785] a. R raw string syntax doesn't highlight
  2. b. raw strings containing a " break symbol parsing, eg char b[]=u8R"b(abc")b"; adding and removing the " after c starts and stops parsing of symbols past this point. R"up to 16 characters(your raw string which can include anything except the 16 chars)the same 16 chars" is a new raw string format std 2.14.5
  3. [0b4ec549fc02d781a6213fad109f954dcaf28f40] c.user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight, eg 1.2ULL std 2.14.8 (not a Scintilla problem since Scintilla doesn't know about the declaration of an operator "") std 2.14.8
  4. [0b4ec549fc02d781a6213fad109f954dcaf28f40] d.user defined "string" literals show as strings and the suffix is not highlighted eg "abcdef"_is_a_user_literal is a user literal not a string followed by an identifier (same as item c.)
  5. e. operator delete[] does not highlight the [] (Scintilla problem?)
  6. f. forward declared class names create "Other" symbol types not struct or class symbols, seems to need the {} to recognise a declaration. eg struct s; s is not recognised as a struct symbol. PS applies to C as well.
  7. g. declarations of the form my_class::nested var; insert var into my_class in symbols eg struct G{ struct G1{}; }; G::G1 g; shows g as a member of struct G (Note: not consistent, sometimes g is shown in a section called Members, can't find determining factor)
  8. [8d3085b61c7b86457acb35c4b298d5afcea17082] h. scope autocompletion on -> should remain after ->*
  9. i. [[ ]] attribute syntax not parsed, confuses the parser
  10. [6c7f69] j. typed enums (eg enum class xxx {};) parsed as classes and erroneously
  11. [f2f22d] k. enums with base types fixed don't appear in symbols
  12. l. namespace aliases parsed as "Other" not namespaces
  13. m. declarations namespace::type var; insert var into the namespace on symbols
  14. n. deleted member functions not identified in symbols, show as if declared to exist, not to be removed (picky)
  15. o. direct initialisations do not show as symbols
  16. p. scope autocomplete does not show base class members
  17. q. scope autocomplete does not respect access controls on members
  18. r. friend declarations are treated as member declarations
  19. s. template class parameters not recognised as typenames
  20. t. tooltips don't work for template parameters when < is typed
  21. u. explicit specialisations break autocompletely
  22. v. the documented limitation of not parsing local declarations should be mentioned for completeness
  23. [b39f90] w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, B in the following snippet is not recognized:

    class A {
        enum class B : int {
            X, Y, Z
        };
    };
    

  24. x. alias templates not highlighted, see http://en.wikipedia.org/wiki/C%2B%2B11#Alias_templates See [#912].

  25. y. Using uniform initializers with C++11 class and object declarations mistakenly treats the object as a typename, eg in

    class a { int b; } *c {nullptr};
    

    a and c become classnames, classes in the symbol pane and coloured as a class name.

    class a { int b; }; a *c {nullptr};
    

    a remains a class name but now c is an object again, not a class. (was [#964])

  26. static_assert contents not ignored


Linux Geany 1.23 (git >= eeddd6f), en_AU.UTF-8 : GTK 2.24.10, GLib 2.32.3

Most of the items in the attachment were tested to compile (possibly with extra surrounding code) on GCC 3.7.1 (errors in transcription excepted :)

Related

Bugs: #912
Bugs: #964
Commit: [0b4ec5]
Commit: [6c7f69]
Commit: [8d3085]
Commit: [a77785]
Commit: [b39f90]
Commit: [f2f22d]

Discussion

  • Lex Trotman

    Lex Trotman - 2012-10-20

    examples of most of the items listed

     
  • Lex Trotman

    Lex Trotman - 2012-10-20

    GCC 4.7.1 I meant of course

     
  • Colomban Wendling

    a: fixed, it was "just" a missing mapping for SCE_C_STRINGRAW (how this happened I don't know…)

     
  • Colomban Wendling

    c: ok, complete parsing of numbers may help, but it probably would just not highlight the non-numeric suffix (as the string suffixes, your "d" point). Though, note that the current highlighting of numeric constant is perfectly exact from the C preprocessor point of view (last point of http://gcc.gnu.org/onlinedocs/gcc/Incompatibilities.html\). BTW, I have a patch for "proper" number parsing I did for the Vala number methods bug.

    d: this is not really fixable, how would you differentiate a "string"MACRO_OR_DEFINE from those C++11 user literals?

    f: ok, quite easy to fix, but having declarations (so without the definition) in the type list may confuse the scope completion code (since the declaration is a perfect match, simply with no children).

    n: I don't understand this one.

    v: nor do I get this one.

     
  • Colomban Wendling

    • labels: --> Filetypes
    • status: open --> open-accepted
     
  • Colomban Wendling

    j and k: fixed in Git

     
  • Anonymous

    Anonymous - 2013-06-01
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,6 +1,6 @@
     This report is a grab bag of some C++11 things that need fixing so they don't get lost, alpha numbered to refer to as they are fixed.  The list is not intended to be exhaustive as I don't use C++11 in anger yet.  There are some non-C++11 specific ones I identified as well, some of these are already known but not well bug reported.
    
    -a. R raw string syntax doesn't highlight
    +<s>a. R raw string syntax doesn't highlight</s>
     b. raw strings containing a " break symbol parsing
     c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight
     d. user defined "string" literals show as strings and the suffix is not highlighted
    @@ -9,8 +9,8 @@
     g. declarations class::nested var; insert var into class in symbols
     h. scope autocompletion on -&gt; should remain after -&gt;\*
     i. \[\[ \]\] attribute syntax not parsed, confuses the parser
    -j. typed enums \(eg enum class xxx \{\};\) parsed as classes and erroneously
    -k. enums with base types fixed don't appear in symbols
    +<s>j. typed enums \(eg enum class xxx \{\};\) parsed as classes and erroneously</s>
    +<s>k. enums with base types fixed don't appear in symbols</s>
     l. namespace aliases parsed as "Other" not namespaces
     m. declarations namespace::type var; insert var into the namespace on symbols
     n. deleted member functions not identified in symbols, show as if declared to exist, not to be removed \(picky\)
    @@ -22,6 +22,16 @@
     t. tooltips don't work for template parameters when &lt; is typed
     u. explicit specialisations break autocompletely
     v. the documented limitation of not parsing local declarations should be mentioned for completeness
    +w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, `B` in the following snippet is not recognized:
    +
    +    :::c++
    +    class A {
    +        enum class B : int {
    +            X, Y, Z
    +        };
    +    };
    +
    +-------------
    
     Linux Geany 1.23 \(git &gt;= eeddd6f\), en\_AU.UTF-8 : GTK 2.24.10, GLib 2.32.3
    
    • Group: --> v1.22
     
  • Anonymous

    Anonymous - 2013-06-01
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -30,6 +30,7 @@
                 X, Y, Z
             };
         };
    +x. alias templates not highlighted, see <http://en.wikipedia.org/wiki/C%2B%2B11#Alias_templates>
    
     -------------
    
     
  • Lex Trotman

    Lex Trotman - 2013-06-08
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -30,7 +30,20 @@
                 X, Y, Z
             };
         };
    -x. alias templates not highlighted, see <http://en.wikipedia.org/wiki/C%2B%2B11#Alias_templates>
    +x. alias templates not highlighted, see <http://en.wikipedia.org/wiki/C%2B%2B11#Alias_templates> See #912.
    +y. Using uniform initializers with C++11 class and object declarations mistakenly treats the object as a typename, eg in
    +
    +~~~~~
    +class a { int b; } *c {nullptr};
    +~~~~~
    +
    +a and c become classnames, classes in the symbol pane and coloured as a class name.
    +
    +~~~~~
    +class a { int b; }; a *c {nullptr};
    +~~~~~
    +
    +a remains a class name but now c is an object again, not a class. (was #964)
    
     -------------
    
     
  • Colomban Wendling

    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -22,7 +22,7 @@
     t. tooltips don't work for template parameters when &lt; is typed
     u. explicit specialisations break autocompletely
     v. the documented limitation of not parsing local declarations should be mentioned for completeness
    -w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, `B` in the following snippet is not recognized:
    +<s>w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, `B` in the following snippet is not recognized:
    
         :::c++
         class A {
    @@ -30,6 +30,7 @@
                 X, Y, Z
             };
         };
    +</s>
     x. alias templates not highlighted, see <http://en.wikipedia.org/wiki/C%2B%2B11#Alias_templates> See #912.
     y. Using uniform initializers with C++11 class and object declarations mistakenly treats the object as a typename, eg in
    
     
  • Colomban Wendling

    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,53 +1,52 @@
     This report is a grab bag of some C++11 things that need fixing so they don't get lost, alpha numbered to refer to as they are fixed.  The list is not intended to be exhaustive as I don't use C++11 in anger yet.  There are some non-C++11 specific ones I identified as well, some of these are already known but not well bug reported.
    
    -<s>a. R raw string syntax doesn't highlight</s>
    -b. raw strings containing a " break symbol parsing
    -c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight
    -d. user defined "string" literals show as strings and the suffix is not highlighted
    -e. operator delete\[\] does not highlight the \[\]
    -f. forward declared classes not always highlighted as types, seems to need the \{\}
    -g. declarations class::nested var; insert var into class in symbols
    -h. scope autocompletion on -&gt; should remain after -&gt;\*
    -i. \[\[ \]\] attribute syntax not parsed, confuses the parser
    -<s>j. typed enums \(eg enum class xxx \{\};\) parsed as classes and erroneously</s>
    -<s>k. enums with base types fixed don't appear in symbols</s>
    -l. namespace aliases parsed as "Other" not namespaces
    -m. declarations namespace::type var; insert var into the namespace on symbols
    -n. deleted member functions not identified in symbols, show as if declared to exist, not to be removed \(picky\)
    -o. direct initialisations do not show as symbols
    -p. scope autocomplete does not show base class members
    -q. scope autocomplete does not respect access controls on members
    -r. friend declarations are treated as member declarations
    -s. template class parameters not recognised as typenames
    -t. tooltips don't work for template parameters when &lt; is typed
    -u. explicit specialisations break autocompletely
    -v. the documented limitation of not parsing local declarations should be mentioned for completeness
    -<s>w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, `B` in the following snippet is not recognized:
    +1. <s>a. R raw string syntax doesn't highlight</s>
    +* b. raw strings containing a `"` break symbol parsing
    +* c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight
    +* d. user defined "string" literals show as strings and the suffix is not highlighted
    +* e. operator `delete[]` does not highlight the `[]`
    +* f. forward declared classes not always highlighted as types, seems to need the `{}`
    +* g. declarations `class::nested var;` insert `var` into `class` in symbols
    +* h. scope autocompletion on -&gt; should remain after -&gt;\*
    +* i. `[[ ]]` attribute syntax not parsed, confuses the parser
    +* <s>j. typed enums (eg `enum class xxx {};`) parsed as classes and erroneously</s>
    +* <s>k. enums with base types fixed don't appear in symbols</s>
    +* l. namespace aliases parsed as "Other" not namespaces
    +* m. declarations `namespace::type var;` insert `var` into the `namespace` on symbols
    +* n. deleted member functions not identified in symbols, show as if declared to exist, not to be removed (picky)
    +* o. direct initialisations do not show as symbols
    +* p. scope autocomplete does not show base class members
    +* q. scope autocomplete does not respect access controls on members
    +* r. friend declarations are treated as member declarations
    +* s. template class parameters not recognised as typenames
    +* t. tooltips don't work for template parameters when &lt; is typed
    +* u. explicit specialisations break autocompletely
    +* v. the documented limitation of not parsing local declarations should be mentioned for completeness
    +* <s>w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, `B` in the following snippet is not recognized:
    +    
    +        :::c++
    +        class A {
    +            enum class B : int {
    +                X, Y, Z
    +            };
    +        };
    +    </s>
    
    -    :::c++
    -    class A {
    -        enum class B : int {
    -            X, Y, Z
    -        };
    -    };
    -</s>
    -x. alias templates not highlighted, see <http://en.wikipedia.org/wiki/C%2B%2B11#Alias_templates> See #912.
    -y. Using uniform initializers with C++11 class and object declarations mistakenly treats the object as a typename, eg in
    -
    -~~~~~
    -class a { int b; } *c {nullptr};
    -~~~~~
    -
    -a and c become classnames, classes in the symbol pane and coloured as a class name.
    -
    -~~~~~
    -class a { int b; }; a *c {nullptr};
    -~~~~~
    -
    -a remains a class name but now c is an object again, not a class. (was #964)
    +* x. alias templates not highlighted, see <http://en.wikipedia.org/wiki/C%2B%2B11#Alias_templates> See [#912].
    +* y. Using uniform initializers with C++11 class and object declarations mistakenly treats the object as a typename, eg in
    +    
    +        :::c++
    +        class a { int b; } *c {nullptr};
    +    
    +    a and c become classnames, classes in the symbol pane and coloured as a class     name.
    +    
    +        :::c++
    +        class a { int b; }; a *c {nullptr};
    +    
    +    a remains a class name but now c is an object again, not a class. (was [#964])
    
     -------------
    
    -Linux Geany 1.23 \(git &gt;= eeddd6f\), en\_AU.UTF-8 : GTK 2.24.10, GLib 2.32.3
    +Linux Geany 1.23 (git &gt;= eeddd6f), en_AU.UTF-8 : GTK 2.24.10, GLib 2.32.3
    
    -Most of the items in the attachment were tested to compile \(possibly with extra surrounding code\) on GCC 3.7.1 \(errors in transcription excepted :\)
    +Most of the items in the attachment were tested to compile (possibly with extra surrounding code) on GCC 3.7.1 (errors in transcription excepted :)
    
     
  • Colomban Wendling

    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,6 +1,6 @@
     This report is a grab bag of some C++11 things that need fixing so they don't get lost, alpha numbered to refer to as they are fixed.  The list is not intended to be exhaustive as I don't use C++11 in anger yet.  There are some non-C++11 specific ones I identified as well, some of these are already known but not well bug reported.
    
    -1. <s>a. R raw string syntax doesn't highlight</s>
    +1. [a77785] <s>a. R raw string syntax doesn't highlight</s>
     * b. raw strings containing a `"` break symbol parsing
     * c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight
     * d. user defined "string" literals show as strings and the suffix is not highlighted
    @@ -9,8 +9,8 @@
     * g. declarations `class::nested var;` insert `var` into `class` in symbols
     * h. scope autocompletion on -&gt; should remain after -&gt;\*
     * i. `[[ ]]` attribute syntax not parsed, confuses the parser
    -* <s>j. typed enums (eg `enum class xxx {};`) parsed as classes and erroneously</s>
    -* <s>k. enums with base types fixed don't appear in symbols</s>
    +* [6c7f69] <s>j. typed enums (eg `enum class xxx {};`) parsed as classes and erroneously</s>
    +* [f2f22d] <s>k. enums with base types fixed don't appear in symbols</s>
     * l. namespace aliases parsed as "Other" not namespaces
     * m. declarations `namespace::type var;` insert `var` into the `namespace` on symbols
     * n. deleted member functions not identified in symbols, show as if declared to exist, not to be removed (picky)
    @@ -22,7 +22,7 @@
     * t. tooltips don't work for template parameters when &lt; is typed
     * u. explicit specialisations break autocompletely
     * v. the documented limitation of not parsing local declarations should be mentioned for completeness
    -* <s>w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, `B` in the following snippet is not recognized:
    +* [b39f90] <s>w. typed enum class names aren't recognized when the enum class is nested inside another class. For example, `B` in the following snippet is not recognized:
    
             :::c++
             class A {
    
     
  • Lex Trotman

    Lex Trotman - 2013-07-17
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,11 +1,11 @@
     This report is a grab bag of some C++11 things that need fixing so they don't get lost, alpha numbered to refer to as they are fixed.  The list is not intended to be exhaustive as I don't use C++11 in anger yet.  There are some non-C++11 specific ones I identified as well, some of these are already known but not well bug reported.
    
     1. [a77785] <s>a. R raw string syntax doesn't highlight</s>
    -* b. raw strings containing a `"` break symbol parsing
    -* c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight
    -* d. user defined "string" literals show as strings and the suffix is not highlighted
    -* e. operator `delete[]` does not highlight the `[]`
    -* f. forward declared classes not always highlighted as types, seems to need the `{}`
    +* b. raw strings containing a `"` break symbol parsing, eg char b[]=u8R"b(abc")b"; adding and removing the `"` after `c` starts and stops parsing of symbols past this point. R"up to 16 characters(your raw string which can include anything except the 16 chars)the same 16 chars" is a new raw string format std 2.14.5
    +* c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight, eg 1.2ULL std 2.14.8 (Scintilla problem)
    +* d. user defined "string" literals show as strings and the suffix is not highlighted eg "abcdef"_is_a_user_literal is a user literal not a string followed by an identifier (Scintilla problem)
    +* e. operator `delete[]` does not highlight the `[]` (Scintilla? problem)
    +* f. forward declared class names create "Other" symbol types not struct or class symbols, seems to need the `{}` to recognise a declaration. eg struct s; `s` is not recognised as a struct symbol.  PS applies to C as well.
     * g. declarations `class::nested var;` insert `var` into `class` in symbols
     * h. scope autocompletion on -&gt; should remain after -&gt;\*
     * i. `[[ ]]` attribute syntax not parsed, confuses the parser
    
     
  • Lex Trotman

    Lex Trotman - 2013-07-18
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,13 +1,13 @@
     This report is a grab bag of some C++11 things that need fixing so they don't get lost, alpha numbered to refer to as they are fixed.  The list is not intended to be exhaustive as I don't use C++11 in anger yet.  There are some non-C++11 specific ones I identified as well, some of these are already known but not well bug reported.
    
     1. [a77785] <s>a. R raw string syntax doesn't highlight</s>
    -* b. raw strings containing a `"` break symbol parsing, eg char b[]=u8R"b(abc")b"; adding and removing the `"` after `c` starts and stops parsing of symbols past this point. R"up to 16 characters(your raw string which can include anything except the 16 chars)the same 16 chars" is a new raw string format std 2.14.5
    -* c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight, eg 1.2ULL std 2.14.8 (Scintilla problem)
    -* d. user defined "string" literals show as strings and the suffix is not highlighted eg "abcdef"_is_a_user_literal is a user literal not a string followed by an identifier (Scintilla problem)
    -* e. operator `delete[]` does not highlight the `[]` (Scintilla? problem)
    -* f. forward declared class names create "Other" symbol types not struct or class symbols, seems to need the `{}` to recognise a declaration. eg struct s; `s` is not recognised as a struct symbol.  PS applies to C as well.
    -* g. declarations `class::nested var;` insert `var` into `class` in symbols
    -* h. scope autocompletion on -&gt; should remain after -&gt;\*
    +* b. raw strings containing a `"` break symbol parsing, eg `char b[]=u8R"b(abc")b";` adding and removing the `"` after `c` starts and stops parsing of symbols past this point. R"up to 16 characters(your raw string which can include anything except the 16 chars)the same 16 chars" is a new raw string format std 2.14.5
    +* c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight, eg `1.2ULL` std 2.14.8 (not a Scintilla problem since Scintilla doesn't know about the declaration of an operator "") std 2.14.8
    +* d. user defined "string" literals show as strings and the suffix is not highlighted eg `"abcdef"_is_a_user_literal` is a user literal not a string followed by an identifier (same as item c.)
    +* e. operator `delete[]` does not highlight the `[]` (Scintilla problem?)
    +* f. forward declared class names create "Other" symbol types not struct or class symbols, seems to need the `{}` to recognise a declaration. eg `struct s;` `s` is not recognised as a struct symbol.  PS applies to C as well.
    +* g. declarations of the form `my_class::nested var;` insert `var` into `my_class` in symbols eg `struct G{ struct G1{}; }; G::G1 g;` shows `g` as a member of struct `G` (Note: not consistent, sometimes `g` is shown in a section called Members, can't find determining factor) 
    +* [8d3085b] h. <s>scope autocompletion on -&gt; should remain after -&gt;\* </s>
     * i. `[[ ]]` attribute syntax not parsed, confuses the parser
     * [6c7f69] <s>j. typed enums (eg `enum class xxx {};`) parsed as classes and erroneously</s>
     * [f2f22d] <s>k. enums with base types fixed don't appear in symbols</s>
    
     
  • Colomban Wendling

    • labels: Filetypes --> Filetypes, C++, Scintilla, parser
    • Found in: --> v1.24
    • Fixed in: v1.22 --> None
     
  • Indi

    Indi - 2014-04-13

    I hate to take you past the end of the alphabet, but I have two more things to add to this list.

    z. trailing return prevents functions from being recognized.

    C++11 added a new way to write function signatures called the trailing return style, where:

    auto function() -> return_type;
    

    is roughly the same as:

    return_type function();
    

    The only real difference between the two (other than appearance) is the scope that you are in. In the old-style prefix return, you are in the surrounding scope. In the new trailing return, you are in the function's scope.

    typedef int type;
    
    struct foo
    {
      typedef float type;
    };
    
    // "type" here is in the surrounding scope, so it is int
    type foo::func();
    
    // "type" here is in the function's scope, so it is float
    auto foo::func() -> type;
    
    // Basically:
    
    // In leading return style:
    /* This... */ func()
    {
    }
    // ... is in the same scope as this.
    
    // In trailing return style:
    auto func() -> /* This... */
    {
      // ... is in the same scope as this.
    }
    

    ?. static_assert is being misinterpreted as a function when using templates.

    static_assert is handled correctly when using < and > as inequalities, but not when using them as template brackets.

    static_assert(x<100&&x>0, "Works fine");
    static_assert(x<100&&x>y, "Misparsed as function");
    static_assert(x<x>,       "Misparsed as function");
    
    // Practical example
    template <typename T>
    struct A
    {
      static_assert(is_integral<T>::value, "Misparsed as function");
    };
    
     
  • Lex Trotman

    Lex Trotman - 2014-04-23

    Add another one, parsing of function args gets confused by string initialisers containing parens.

     
  • Colomban Wendling

    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -2,12 +2,12 @@
    
     1. [a77785] <s>a. R raw string syntax doesn't highlight</s>
     * b. raw strings containing a `"` break symbol parsing, eg `char b[]=u8R"b(abc")b";` adding and removing the `"` after `c` starts and stops parsing of symbols past this point. R"up to 16 characters(your raw string which can include anything except the 16 chars)the same 16 chars" is a new raw string format std 2.14.5
    -* c. user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight, eg `1.2ULL` std 2.14.8 (not a Scintilla problem since Scintilla doesn't know about the declaration of an operator "") std 2.14.8
    -* d. user defined "string" literals show as strings and the suffix is not highlighted eg `"abcdef"_is_a_user_literal` is a user literal not a string followed by an identifier (same as item c.)
    +* [0b4ec549fc02d781a6213fad109f954dcaf28f40] <s> c.user defined "numeric" literals show as numbers, since they may not be numbers should show as some other highlight, eg `1.2ULL` std 2.14.8 (not a Scintilla problem since Scintilla doesn't know about the declaration of an operator "") std 2.14.8</s>
    +* [0b4ec549fc02d781a6213fad109f954dcaf28f40] <s> d.user defined "string" literals show as strings and the suffix is not highlighted eg `"abcdef"_is_a_user_literal` is a user literal not a string followed by an identifier (same as item c.)</s>
     * e. operator `delete[]` does not highlight the `[]` (Scintilla problem?)
     * f. forward declared class names create "Other" symbol types not struct or class symbols, seems to need the `{}` to recognise a declaration. eg `struct s;` `s` is not recognised as a struct symbol.  PS applies to C as well.
     * g. declarations of the form `my_class::nested var;` insert `var` into `my_class` in symbols eg `struct G{ struct G1{}; }; G::G1 g;` shows `g` as a member of struct `G` (Note: not consistent, sometimes `g` is shown in a section called Members, can't find determining factor) 
    -* [8d3085b] h. <s>scope autocompletion on -&gt; should remain after -&gt;\* </s>
    +* [8d3085b61c7b86457acb35c4b298d5afcea17082] h. <s>scope autocompletion on -&gt; should remain after -&gt;\* </s>
     * i. `[[ ]]` attribute syntax not parsed, confuses the parser
     * [6c7f69] <s>j. typed enums (eg `enum class xxx {};`) parsed as classes and erroneously</s>
     * [f2f22d] <s>k. enums with base types fixed don't appear in symbols</s>
    
     
  • Nick Treleaven

    Nick Treleaven - 2015-02-14

    Added static_assert to the list, which now works.

     
  • Nick Treleaven

    Nick Treleaven - 2015-02-14
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -45,6 +45,8 @@
    
         a remains a class name but now c is an object again, not a class. (was [#964])
    
    +* <s>static_assert contents not ignored</s>
    +
     -------------
    
     Linux Geany 1.23 (git &gt;= eeddd6f), en_AU.UTF-8 : GTK 2.24.10, GLib 2.32.3
    
     

Log in to post a comment.