Why private is unaccessible to the extension?

Here is my ViewController.swift file:

class ViewController: UIViewController {
    private var myInt = 10

extension ViewController {
    func printMyInt() {

Although as mentioned in the Swift documentation – Access Levels section:

  • Python raw_input not taking input
  • How do you export your finished application from Xcode?
  • Xcode GIT Can't Copy New Files
  • Xcode 6: Build hangs and Interface Builder Cocoa Touch Tool starts allocating all RAM
  • Setting up Xcode for CocoaPods plugin
  • Adding Navigation Bar programmatically iOS
  • Private access restricts the use of an entity to the enclosing
    declaration, and to extensions of that declaration that are in the
    same file. Use private access to hide the implementation details of a
    specific piece of functionality when those details are used only
    within a single declaration.

    Since Swift 4 has been released, I assume that I am able to implement such a thing (it is also mentioned in: What’s New in Swift – WWDC 2017 session), however, the complier shows me:

    enter image description here

    ‘myInt’ is inaccessible due to ‘private’ protection level

    Is it incompatible with what mentioned in the documentation?

    As a simple quick solution, I could declare it as:

    fileprivate var myInt = 10

    but I wonder why is it behaves like this, am I misunderstand what mentioned in the documentation? or is it a “Xcode” bug (used 9.0.1 version)?

    Remark: The project has been created in the older Xcode 8 and then migrated to Xcode 9.

    Solutions Collect From Internet About “Why private is unaccessible to the extension?”

    In Swift 4, private members are accessible to extensions of that declaration that are in the same file, see SE-0169 – Improve Interaction Between private Declarations and Extensions.

    If the project has been created in Xcode 8 (with Swift 3) then
    Xcode 9 will open it in “Swift 3 mode” and set the “Swift Language Version” to “Swift 3.2”. Therefore the stricter Swift 3 restrictions hold.

    To make the private extension visible to extension in the same file,
    set the Swift language version to 4 in the build settings. (Of course
    that might make more changes in your code necessary.)

    Even better, use “Edit -> Convert -> To Current Swift Syntax …”