this repo has no description www.jonmsterling.com/01HC/
dependent-types proof-assistant swift
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

Elaborator: minor cleanup

+13 -6
+13 -6
Sources/PterodactylElaborator/Elaborator.swift
··· 8 8 import PterodactylKernel 9 9 import PterodactylSyntax 10 10 11 + extension Array { 12 + var onlyElement: Element? { 13 + guard count == 1 else { return nil } 14 + return self[0] 15 + } 16 + } 17 + 11 18 extension SyntaxTreeCursor { 12 19 var typedBinder: TypedBinder? { 13 - guard case .typedBinder = kind, subtrees.count == 1 else { return nil } 20 + guard case .typedBinder = kind, let type = subtrees.onlyElement else { return nil } 14 21 15 22 var name: String? = nil 16 23 ··· 23 30 break 24 31 } 25 32 26 - return TypedBinder(name: name, type: subtrees[0]) 33 + return TypedBinder(name: name, type: type) 27 34 } 28 35 29 36 var recordFieldSpec: Record.FieldSpec? { 30 - guard case .recordItem(kind: .spec) = kind, subtrees.count == 1 else { return nil } 37 + guard case .recordItem(kind: .spec) = kind, let type = subtrees.onlyElement else { return nil } 31 38 32 39 var name: String? = nil 33 40 ··· 40 47 break 41 48 } 42 49 43 - return Record.FieldSpec(provenance: provenance, name: name, type: subtrees[0]) 50 + return Record.FieldSpec(provenance: provenance, name: name, type: type) 44 51 } 45 52 46 53 var recordFieldImpl: Record.FieldImpl? { 47 - guard case .recordItem(kind: .impl) = kind, subtrees.count == 1 else { return nil } 54 + guard case .recordItem(kind: .impl) = kind, let impl = subtrees.onlyElement else { return nil } 48 55 49 56 var name: String? = nil 50 57 ··· 57 64 break 58 65 } 59 66 60 - return Record.FieldImpl(provenance: provenance, name: name, impl: subtrees[0]) 67 + return Record.FieldImpl(provenance: provenance, name: name, impl: impl) 61 68 } 62 69 63 70 var untypedBinder: UntypedBinder? {