swiftlang / swiftlang/swift-java

wrap-java: Circular references with javaparser-core-3.28.0.jar

Open
#541 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Swift
Stars
1.2k
Forks
123
Avg merge
1d 7h
Merged PRs (30d)
16

Description

Here's one of the cycles being complained about:

// Auto-generated by Java-to-Swift wrapper generator.
import CSwiftJavaJNI
import SwiftJava

@JavaClass("com.github.javaparser.ast.Node", implements: HasParentNode<Node>.self, Visitable.self, NodeWithRange<Node>.self, NodeWithTokenRange<Node>.self)
open class Node: JavaObject {
  /**
   * Java method `getMetaModel`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.metamodel.NodeMetaModel com.github.javaparser.ast.Node.getMetaModel()
   * ```
   */
@JavaMethod
  open func getMetaModel() -> NodeMetaModel!

  /**
   * Java method `setParentNode`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.setParentNode(com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod
  open func setParentNode(_ newParentNode: Node?) -> Node!

  /**
   * Java method `getPrinter`.
   * 
   * ### Java method signature
   * ```java
   * protected com.github.javaparser.printer.Printer com.github.javaparser.ast.Node.getPrinter()
   * ```
   */
@JavaMethod
  open func getPrinter() -> Printer!

  /**
   * Java method `getPrinter`.
   * 
   * ### Java method signature
   * ```java
   * protected com.github.javaparser.printer.Printer com.github.javaparser.ast.Node.getPrinter(com.github.javaparser.printer.configuration.PrinterConfiguration)
   * ```
   */
@JavaMethod
  open func getPrinter(_ configuration: PrinterConfiguration?) -> Printer!

  /**
   * Java method `setTokenRange`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.setTokenRange(com.github.javaparser.TokenRange)
   * ```
   */
@JavaMethod
  open func setTokenRange(_ tokenRange: TokenRange?) -> Node!

  /**
   * Java method `setRange`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.setRange(com.github.javaparser.Range)
   * ```
   */
@JavaMethod
  open func setRange(_ range: Range?) -> Node!

  /**
   * Java method `setLineComment`.
   * 
   * ### Java method signature
   * ```java
   * public final com.github.javaparser.ast.Node com.github.javaparser.ast.Node.setLineComment(java.lang.String)
   * ```
   */
@JavaMethod
  open func setLineComment(_ comment: String) -> Node!

  /**
   * Java method `setData`.
   * 
   * ### Java method signature
   * ```java
   * public <M> void com.github.javaparser.ast.Node.setData(com.github.javaparser.ast.DataKey<M>,M)
   * ```
   */
@JavaMethod
  open func setData<M: AnyJavaObject>(_ key: DataKey<M>?, _ object: M?)

  /**
   * Java method `containsData`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.containsData(com.github.javaparser.ast.DataKey<?>)
   * ```
   */
@JavaMethod
  open func containsData(_ key: DataKey<JavaObject>?) -> Bool

  /**
   * Java method `removeData`.
   * 
   * ### Java method signature
   * ```java
   * public void com.github.javaparser.ast.Node.removeData(com.github.javaparser.ast.DataKey<?>)
   * ```
   */
@JavaMethod
  open func removeData(_ key: DataKey<JavaObject>?)

  /**
   * Java method `removeForced`.
   * 
   * ### Java method signature
   * ```java
   * public void com.github.javaparser.ast.Node.removeForced()
   * ```
   */
@JavaMethod
  open func removeForced()

  /**
   * Java method `removeComment`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.removeComment()
   * ```
   */
@JavaMethod
  open func removeComment() -> Node!

  /**
   * Java method `findRootNode`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.findRootNode()
   * ```
   */
@JavaMethod
  open func findRootNode() -> Node!

  /**
   * Java method `isAncestorOf`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.isAncestorOf(com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod
  open func isAncestorOf(_ descendant: Node?) -> Bool

  /**
   * Java method `hasScope`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.hasScope()
   * ```
   */
@JavaMethod
  open func hasScope() -> Bool

  /**
   * Java method `isPhantom`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.isPhantom()
   * ```
   */
@JavaMethod
  open func isPhantom() -> Bool

  /**
   * Java method `registerForSubtree`.
   * 
   * ### Java method signature
   * ```java
   * public void com.github.javaparser.ast.Node.registerForSubtree(com.github.javaparser.ast.observer.AstObserver)
   * ```
   */
@JavaMethod
  open func registerForSubtree(_ observer: AstObserver?)

  /**
   * Java method `customInitialization`.
   * 
   * ### Java method signature
   * ```java
   * protected void com.github.javaparser.ast.Node.customInitialization()
   * ```
   */
@JavaMethod
  open func customInitialization()

  /**
   * Java method `setAsParentNodeOf`.
   * 
   * ### Java method signature
   * ```java
   * protected void com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.NodeList<? extends com.github.javaparser.ast.Node>)
   * ```
   */
@JavaMethod
  open func setAsParentNodeOf(_ list: NodeList<Node>?)

  /**
   * Java method `setAsParentNodeOf`.
   * 
   * ### Java method signature
   * ```java
   * protected void com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod
  open func setAsParentNodeOf(_ childNode: Node?)

  /**
   * Java method `createDefaultPrinter`.
   * 
   * ### Java method signature
   * ```java
   * protected com.github.javaparser.printer.Printer com.github.javaparser.ast.Node.createDefaultPrinter(com.github.javaparser.printer.configuration.PrinterConfiguration)
   * ```
   */
@JavaMethod
  open func createDefaultPrinter(_ configuration: PrinterConfiguration?) -> Printer!

  /**
   * Java method `createDefaultPrinter`.
   * 
   * ### Java method signature
   * ```java
   * protected com.github.javaparser.printer.Printer com.github.javaparser.ast.Node.createDefaultPrinter()
   * ```
   */
@JavaMethod
  open func createDefaultPrinter() -> Printer!

  /**
   * Java method `setBlockComment`.
   * 
   * ### Java method signature
   * ```java
   * public final com.github.javaparser.ast.Node com.github.javaparser.ast.Node.setBlockComment(java.lang.String)
   * ```
   */
@JavaMethod
  open func setBlockComment(_ comment: String) -> Node!

  /**
   * Java method `addOrphanComment`.
   * 
   * ### Java method signature
   * ```java
   * public void com.github.javaparser.ast.Node.addOrphanComment(com.github.javaparser.ast.comments.Comment)
   * ```
   */
@JavaMethod
  open func addOrphanComment(_ comment: Comment?)

  /**
   * Java method `removeOrphanComment`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.removeOrphanComment(com.github.javaparser.ast.comments.Comment)
   * ```
   */
@JavaMethod
  open func removeOrphanComment(_ comment: Comment?) -> Bool

  /**
   * Java method `getSymbolResolver`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.resolution.SymbolResolver com.github.javaparser.ast.Node.getSymbolResolver()
   * ```
   */
@JavaMethod
  open func getSymbolResolver() -> SymbolResolver!

  /**
   * Java method `getParentNodeForChildren`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.getParentNodeForChildren()
   * ```
   */
@JavaMethod
  open func getParentNodeForChildren() -> Node!

  /**
   * Java method `getDefaultPrinterConfiguration`.
   * 
   * ### Java method signature
   * ```java
   * protected com.github.javaparser.printer.configuration.PrinterConfiguration com.github.javaparser.ast.Node.getDefaultPrinterConfiguration()
   * ```
   */
@JavaMethod
  open func getDefaultPrinterConfiguration() -> PrinterConfiguration!

  /**
   * Java method `remove`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.remove()
   * ```
   */
@JavaMethod
  open func remove() -> Bool

  /**
   * Java method `remove`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.remove(com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod
  open func remove(_ node: Node?) -> Bool

  /**
   * Java method `equals`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.equals(java.lang.Object)
   * ```
   */
@JavaMethod
  open override func equals(_ obj: JavaObject?) -> Bool

  /**
   * Java method `toString`.
   * 
   * ### Java method signature
   * ```java
   * public final java.lang.String com.github.javaparser.ast.Node.toString()
   * ```
   */
@JavaMethod
  open override func toString() -> String

  /**
   * Java method `toString`.
   * 
   * ### Java method signature
   * ```java
   * public final java.lang.String com.github.javaparser.ast.Node.toString(com.github.javaparser.printer.configuration.PrinterConfiguration)
   * ```
   */
@JavaMethod
  open func toString(_ configuration: PrinterConfiguration?) -> String

  /**
   * Java method `hashCode`.
   * 
   * ### Java method signature
   * ```java
   * public final int com.github.javaparser.ast.Node.hashCode()
   * ```
   */
@JavaMethod
  open override func hashCode() -> Int32

  /**
   * Java method `clone`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.clone()
   * ```
   */
@JavaMethod
  open override func clone() -> Node!

  /**
   * Java method `replace`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.replace(com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod
  open func replace(_ node: Node?) -> Bool

  /**
   * Java method `replace`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.replace(com.github.javaparser.ast.Node,com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod
  open func replace(_ node: Node?, _ replacementNode: Node?) -> Bool

  /**
   * Java method `isRegistered`.
   * 
   * ### Java method signature
   * ```java
   * public boolean com.github.javaparser.ast.Node.isRegistered(com.github.javaparser.ast.observer.AstObserver)
   * ```
   */
@JavaMethod
  open func isRegistered(_ observer: AstObserver?) -> Bool

  /**
   * Java method `register`.
   * 
   * ### Java method signature
   * ```java
   * public void com.github.javaparser.ast.Node.register(com.github.javaparser.ast.observer.AstObserver)
   * ```
   */
@JavaMethod
  open func register(_ observer: AstObserver?)

  /**
   * Java method `unregister`.
   * 
   * ### Java method signature
   * ```java
   * public void com.github.javaparser.ast.Node.unregister(com.github.javaparser.ast.observer.AstObserver)
   * ```
   */
@JavaMethod
  open func unregister(_ observer: AstObserver?)

  /**
   * Java method `setComment`.
   * 
   * ### Java method signature
   * ```java
   * public com.github.javaparser.ast.Node com.github.javaparser.ast.Node.setComment(com.github.javaparser.ast.comments.Comment)
   * ```
   */
@JavaMethod
  open func setComment(_ comment: Comment?) -> Node!

  /**
   * Java method `getData`.
   * 
   * ### Java method signature
   * ```java
   * public <M> M com.github.javaparser.ast.Node.getData(com.github.javaparser.ast.DataKey<M>)
   * ```
   */
@JavaMethod(typeErasedResult: "M!")
  open func getData<M: AnyJavaObject>(_ key: DataKey<M>?) -> M!
}
extension JavaClass<Node> {
  @JavaStaticField(isFinal: true)
  public var ABSOLUTE_BEGIN_LINE: Int32

  @JavaStaticField(isFinal: true)
  public var ABSOLUTE_END_LINE: Int32

  @JavaStaticField(isFinal: true)
  public var SYMBOL_RESOLVER_KEY: DataKey<SymbolResolver>!

  @JavaStaticField(isFinal: true)
  public var PRINTER_KEY: DataKey<Printer>!
}
// Auto-generated by Java-to-Swift wrapper generator.
import CSwiftJavaJNI
import SwiftJava

@JavaInterface("com.github.javaparser.HasParentNode", extends: Observable.self)
public struct HasParentNode<T: AnyJavaObject> {
  /**
   * Java method `setParentNode`.
   * 
   * ### Java method signature
   * ```java
   * public abstract T com.github.javaparser.HasParentNode.setParentNode(com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod(typeErasedResult: "T!")
  public func setParentNode(_ parentNode: Node?) -> T!

  /**
   * Java method `hasParentNode`.
   * 
   * ### Java method signature
   * ```java
   * public default boolean com.github.javaparser.HasParentNode.hasParentNode()
   * ```
   */
@JavaMethod
  public func hasParentNode() -> Bool

  /**
   * Java method `isDescendantOf`.
   * 
   * ### Java method signature
   * ```java
   * public default boolean com.github.javaparser.HasParentNode.isDescendantOf(com.github.javaparser.ast.Node)
   * ```
   */
@JavaMethod
  public func isDescendantOf(_ ancestor: Node?) -> Bool

  /**
   * Java method `getParentNodeForChildren`.
   * 
   * ### Java method signature
   * ```java
   * public abstract com.github.javaparser.ast.Node com.github.javaparser.HasParentNode.getParentNodeForChildren()
   * ```
   */
@JavaMethod
  public func getParentNodeForChildren() -> Node!

  /**
   * Java method `isRegistered`.
   * 
   * ### Java method signature
   * ```java
   * public abstract boolean com.github.javaparser.ast.observer.Observable.isRegistered(com.github.javaparser.ast.observer.AstObserver)
   * ```
   */
@JavaMethod
  public func isRegistered(_ observer: AstObserver?) -> Bool

  /**
   * Java method `register`.
   * 
   * ### Java method signature
   * ```java
   * public abstract void com.github.javaparser.ast.observer.Observable.register(com.github.javaparser.ast.observer.AstObserver)
   * ```
   */
@JavaMethod
  public func register(_ observer: AstObserver?)

  /**
   * Java method `unregister`.
   * 
   * ### Java method signature
   * ```java
   * public abstract void com.github.javaparser.ast.observer.Observable.unregister(com.github.javaparser.ast.observer.AstObserver)
   * ```
   */
@JavaMethod
  public func unregister(_ observer: AstObserver?)
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce wrap-java with javaparser-core-3.28.0.jar and inspect the generated Swift Node wrapper alongside the reported circular-reference diagnostics. Trace how the wrapper generator handles these references; done means this input generates without circular-reference errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, swift
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.