Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
extension JavaIterator: IteratorProtocol {
public typealias Element = E

public func next() -> E? {
@_implements(IteratorProtocol,next())
public mutating func swiftNext() -> E? {
if hasNext() {
let nextResult: JavaObject? = next()
return nextResult.map { $0.as(E.self)! }
return next() as E
}

return nil
Expand Down
22 changes: 20 additions & 2 deletions Sources/SwiftJava/generated/JavaIterator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,30 @@ import SwiftJavaJNICore

@JavaInterface("java.util.Iterator")
public struct JavaIterator<E: AnyJavaObject> {
/// Java method `remove`.
///
/// ### Java method signature
/// ```java
/// public default void java.util.Iterator.remove()
/// ```
@JavaMethod
public func remove()

/// Java method `hasNext`.
///
/// ### Java method signature
/// ```java
/// public abstract boolean java.util.Iterator.hasNext()
/// ```
@JavaMethod
public func hasNext() -> Bool

@JavaMethod
public func next() -> JavaObject!
/// Java method `next`.
///
/// ### Java method signature
/// ```java
/// public abstract E java.util.Iterator.next()
/// ```
@JavaMethod(typeErasedResult: "E!")
public func next() -> E!
}
12 changes: 12 additions & 0 deletions Tests/SwiftJavaTests/BasicRuntimeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
//===----------------------------------------------------------------------===//

import JavaNet
import JavaUtil
import SwiftJava
import XCTest // NOTE: Workaround for https://github.com/swiftlang/swift-java/issues/43

Expand Down Expand Up @@ -96,6 +97,17 @@ class BasicRuntimeTests: XCTestCase {

XCTAssertEqual(string, "https://swift.org")
}

func testListIterator() throws {
let environment = try jvm.environment()

let javaList = try XCTUnwrap(ArrayList<JavaInteger>(environment: environment).as(List<JavaInteger>.self))
_ = javaList.add(JavaInteger(0, environment: environment))
_ = javaList.add(JavaInteger(1, environment: environment))
_ = javaList.add(JavaInteger(2, environment: environment))

XCTAssertEqual(javaList.map { $0.intValue() }, [0, 1, 2])
}
}

@JavaClass("org.swift.javakit.Nonexistent")
Expand Down
Loading