@@ -116,14 +116,12 @@ public struct Substring {
116116}
117117
118118extension Substring {
119- @inlinable
120- internal var _wholeGuts : _StringGuts {
121- @inline ( __always) get { return _slice. base. _guts }
122- }
123- @inlinable
124- internal var _wholeString : String {
125- @inline ( __always) get { return String ( self . _wholeGuts) }
126- }
119+ /// Returns the underlying string from which this Substring was derived.
120+ @_alwaysEmitIntoClient
121+ public var base : String { return _slice. base }
122+
123+ @inlinable @inline ( __always)
124+ internal var _wholeGuts : _StringGuts { return base. _guts }
127125
128126 @inlinable
129127 internal var _offsetRange : Range < Int > {
@@ -141,7 +139,7 @@ extension Substring {
141139 #else
142140 @usableFromInline @inline ( never) @_effects ( releasenone)
143141 internal func _invariantCheck( ) {
144- self . _wholeString . _invariantCheck ( )
142+ self . base . _invariantCheck ( )
145143 }
146144 #endif // INTERNAL_CHECKS_ENABLED
147145}
@@ -420,7 +418,7 @@ extension Substring {
420418 @inlinable
421419 public var utf8 : UTF8View {
422420 get {
423- return _wholeString . utf8 [ startIndex..< endIndex]
421+ return base . utf8 [ startIndex..< endIndex]
424422 }
425423 set {
426424 self = Substring ( newValue)
@@ -546,7 +544,7 @@ extension Substring {
546544 @inlinable
547545 public var utf16 : UTF16View {
548546 get {
549- return _wholeString . utf16 [ startIndex..< endIndex]
547+ return base . utf16 [ startIndex..< endIndex]
550548 }
551549 set {
552550 self = Substring ( newValue)
@@ -672,7 +670,7 @@ extension Substring {
672670 @inlinable
673671 public var unicodeScalars : UnicodeScalarView {
674672 get {
675- return _wholeString . unicodeScalars [ startIndex..< endIndex]
673+ return base . unicodeScalars [ startIndex..< endIndex]
676674 }
677675 set {
678676 self = Substring ( newValue)
0 commit comments