-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
kotlin: Improve access of companions object fields/methods in Java #201
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -473,13 +473,15 @@ class Time private constructor( | |
internal fun julianMillennia() = tt / DAYS_PER_MILLENNIUM | ||
|
||
companion object { | ||
@JvmStatic | ||
private val origin = GregorianCalendar(TimeZoneUtc).also { | ||
it.set(2000, 0, 1, 12, 0, 0) | ||
it.set(Calendar.MILLISECOND, 0) | ||
}.time | ||
|
||
private const val MILLIS_PER_DAY = 24 * 3600 * 1000 | ||
|
||
@JvmStatic | ||
private val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").also { | ||
it.timeZone = TimeZoneUtc | ||
} | ||
|
@@ -498,6 +500,7 @@ class Time private constructor( | |
* | ||
* @param tt The number of days after the J2000 epoch. | ||
*/ | ||
@JvmStatic | ||
fun fromTerrestrialTime(tt: Double): Time = Time(universalTime(tt), tt) | ||
} | ||
} | ||
|
@@ -547,6 +550,7 @@ internal data class TerseVector(var x: Double, var y: Double, var z: Double) { | |
} | ||
|
||
companion object { | ||
@JvmStatic | ||
fun zero() = TerseVector(0.0, 0.0, 0.0) | ||
} | ||
} | ||
|
@@ -1004,7 +1008,8 @@ class RotationMatrix( | |
* This matrix can be the starting point for other operations, | ||
* such as calling a series of [RotationMatrix.combine] or [RotationMatrix.pivot]. | ||
*/ | ||
fun identity() = RotationMatrix ( | ||
@JvmStatic | ||
fun identity() = RotationMatrix( | ||
1.0, 0.0, 0.0, | ||
0.0, 1.0, 0.0, | ||
0.0, 0.0, 1.0 | ||
|
@@ -1989,7 +1994,7 @@ internal fun peakMoonShadow(searchCenterTime: Time): ShadowInfo { | |
val window = 0.03 // days before/after new moon to search for minimum shadow distance | ||
val t1 = searchCenterTime.addDays(-window) | ||
val t2 = searchCenterTime.addDays(+window) | ||
val tx = search(moonShadowSlopeContext, t1, t2, 1.0) ?: | ||
val tx = search(t1, t2, 1.0, moonShadowSlopeContext) ?: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should've been done in the previous PR, not sure how I've missed it... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OK, I just pushed this fix already. I figured we were both changing things at the same time? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. True, and great that git didn't need a rebase! :) |
||
throw InternalError("Failed to find Moon peak shadow event.") | ||
return moonShadow(tx) | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
probably only public fields and methods should be marked with static but well maybe it instructs the compiler to optimize companion object altogether or not, not sure but sure it should be harmless.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I seem to remember we talked about whether we want to get rid of using
GregorianCalendar
, because it brings in a dependency on Java. Is that correct? I think you said if someone wants to use the Kotlin version of Astronomy Engine to create WebAssembly, this could be a problem. I think there a few other minor uses of Java symbols. It is possible to do something like the C version, where we make our own date/time functions from scratch.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh sure, you can just take unix timestamp, the core data java.util.Date holds, https://docs.oracle.com/javase/7/docs/api/java/util/Date.html#getTime()
This proposed change is roughly separate matter from what this change is about, https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-inline/ is considered to be common between Kotlin targets mainly for Java support for sure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I think you meant
@JvmStatic
, not@JvmInline
, but it looks like@JvmStatic
is also safe to use outside the JVM (if I understand the documentation correctly). I just keep thinking about this, and yes, I understand it is a separate issue. I just wanted to understand it. Thank you!