wrap-java: Circular references with javaparser-core-3.28.0.jar
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
javaparser-core-3.28.0.jar を使って wrap-java を再現し、報告された循環参照の診断と併せて、生成された Swift Node wrapper を調査します。wrapper generator がこれらの参照をどのように処理するかを追跡します。この入力が循環参照エラーなしで生成されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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?)
}
- 主要言語
- Swift
- スター
- 1.3k
- フォーク
- 127
- 平均マージ
- 2日 14時間
- マージ済み PR(30日)
- 5
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
swiftlang/swift-java のほかの issue
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
swiftlang/swift-java#945 ·
メンテナーはふだん 1 日以内に返信
-
android
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
swiftlang/swift-java#663 · コメント 4 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 56/100
swiftlang/swift-java#949 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
swiftlang/swift-java#948 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 54/100
swiftlang/swift-java#947 ·
メンテナーはふだん 1 日以内に返信
swiftlang/swift-java の issue をすべて見る
似ている issue
-
needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
nightscout/Trio#1741 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
deepsealabs/libdc-swift#107 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
alexandrereol/ethmensa#30 ·
-
addition
難易度 1/5 1時間未満 初心者へのやさしさ 83/100
jaywcjlove/awesome-mac#4259 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
VictorKildahl/cra#192 ·
メンテナーはふだん 1 日以内に返信