Comments (3)
Short answer: it could be improved. I will try it.
Discussion:
<
and >
are used as either binary operators or angle brackets. Treating them as a bracket unconditionally would break indentation of expressions. So we must distinguish them.
There are two cases where < ... >
is used other than binary operator:
-
generic-parameter-clause
typealias-declaration
function-declaration
union-style-enum
raw-value-style-enum
struct-declaration
class-declaration
protocol-method-declaration
protocol-initializer-declaration
initializer-declaration
subscript-head
-
generic-argument-clause
type-identifier
primary-expression
explicit-member-expression
generic-argument-clause
is ambiguous: foo(A < B, C > (d))
could be parsed as foo((A < B), (C > (d)))
or foo(A<B, C>(d))
(invocation of A
with two type arguments B
, C
and one value d
). On the other hand, generic-parameter-clause
seems to be much simpler; looking back one or two tokens is sufficient to recognize the open bracket.
Summary of grammers of generic-parameter-clause
:
-
typealias-declaration:
"typealias" identifier "<"
-
function-declaration:
"func" identifier "<"
"func" operator "<"
-
union-style-enum:
"enum" identifier "<"
-
raw-value-style-enum
"enum" identifier "<"
-
struct-declaration
"struct" identifier "<"
-
class-declaration
"class" identifier "<"
-
protocol-method-declaration:
"func" identifier "<"
"func" operator "<"
-
protocol-initializer-declaration
"init" "<"
"init" "?" "<"
"init" "!" "<"
-
initializer-declaration:
"init" "<"
"init" "?" "<"
"init" "!" "<"
-
subscript-head:
"subscript" "<"
from swift-mode.
Fixed by 29759f5.
Thank you for reporting.
from swift-mode.
from swift-mode.
Related Issues (20)
- I am not able to set the default indent to 2 spaces. HOT 2
- Link sourcekit-lsp in README HOT 1
- Debugging multiple targets is not supported HOT 1
- How do you configure what scheme to build? HOT 1
- When switch case statements are fully indented, following lines are not at all
- Lisp nesting exceeds ‘max-lisp-eval-depth’ error HOT 3
- Protocol indentation HOT 2
- iMenu doesn't find declarations unless the opening brace of the containing top-level entity is on the same line HOT 4
- Function declarations get tagged with function-call-face HOT 1
- How do I use the swift menu? HOT 1
- Does not work on M1 Macs HOT 5
- Performance incompatible with which-function mode HOT 2
- Consider pilfering functionality HOT 3
- Support for Emacs 29+ treesitter integration HOT 1
- comint-continue-subjob: Buffer *Swift REPL [xcrun swift]* has no process HOT 2
- Swift 5.8 Deprecated --chdir HOT 1
- How can I turn off the arguments and fields aligning, and use it with an indentation only? HOT 1
- which-function mode missing full extension name HOT 1
- Syntax highlight error in function names that contain keywords HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swift-mode.