title: Swift 3: Tableview datasource methods "Overriding non-open instance method outside of its defining module" error
body: <p>I have an <code>open</code> <code>BaseViewController</code> class in core framework that has tableview datasource methods implemented. Let's say I've another class (outside the module) <code>ClassA</code> with <code>BaseViewController</code> as it's superclass. When I try to override tableview datasource methods, it's throwing this error <code>Overriding non-open instance method outside of its defining module</code>.</p>
  
  <p><code>BaseViewController</code> looks like this</p>
  
  <pre><code>open class BaseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
  
  ...
  
  public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      return 0
  }
  
  public func numberOfSections(in tableView: UITableView) -&gt; Int {
      return 0
  }
  
  public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
      return UITableViewCell()
    }
  }
  </code></pre>
  
  <p>ClassA</p>
  
  <pre><code>import CustomCoreFramework
  
  class ClassA : BaseViewController {
  
  // throws an error
  public override func numberOfSections(in tableView: UITableView) -&gt; Int {
      return tableViewListItems.count
  }
  
  }
  </code></pre>
  
  <p>I suppose the <code>open</code> class methods should be accessible outside the module. I tried changing the tableview methods access specifiers to <code>public</code> and different combinations but nothing seems to work.</p>