Commit 1a25dbb4 authored by Andrew Twyman's avatar Andrew Twyman

Add test to verify that single-language interfaces don't break builds in other languages

parent be210d55
...@@ -11,3 +11,4 @@ ...@@ -11,3 +11,4 @@
@import "primtypes.djinni" @import "primtypes.djinni"
@import "constants.djinni" @import "constants.djinni"
@import "multiple_inheritance.djinni" @import "multiple_inheritance.djinni"
@import "single_language_interfaces.djinni"
objc_only_listener = interface +o {}
java_only_listener = interface +j {}
# Generating and compiling this makes sure other languages don't break
# on references to interfaces they don't need.
uses_single_language_listeners = interface +o +j +c {
callForObjC(l: objc_only_listener);
callForJava(l: java_only_listener);
}
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#pragma once
namespace testsuite {
class JavaOnlyListener {
public:
virtual ~JavaOnlyListener() {}
};
} // namespace testsuite
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#pragma once
namespace testsuite {
class ObjcOnlyListener {
public:
virtual ~ObjcOnlyListener() {}
};
} // namespace testsuite
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#pragma once
#include <memory>
namespace testsuite {
class JavaOnlyListener;
class ObjcOnlyListener;
/**
* Generating and compiling this makes sure other languages don't break
* on references to interfaces they don't need.
*/
class UsesSingleLanguageListeners {
public:
virtual ~UsesSingleLanguageListeners() {}
virtual void callForObjC(const std::shared_ptr<ObjcOnlyListener> & l) = 0;
virtual void callForJava(const std::shared_ptr<JavaOnlyListener> & l) = 0;
};
} // namespace testsuite
...@@ -13,6 +13,7 @@ djinni/test.djinni ...@@ -13,6 +13,7 @@ djinni/test.djinni
djinni/primtypes.djinni djinni/primtypes.djinni
djinni/constants.djinni djinni/constants.djinni
djinni/multiple_inheritance.djinni djinni/multiple_inheritance.djinni
djinni/single_language_interfaces.djinni
djinni/date.djinni djinni/date.djinni
djinni/date.yaml djinni/date.yaml
djinni/duration.djinni djinni/duration.djinni
......
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
package com.dropbox.djinni.test;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
public abstract class JavaOnlyListener {
}
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
package com.dropbox.djinni.test;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
public abstract class ObjcOnlyListener {
}
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
package com.dropbox.djinni.test;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* Generating and compiling this makes sure other languages don't break
* on references to interfaces they don't need.
*/
public abstract class UsesSingleLanguageListeners {
public abstract void callForObjC(@CheckForNull ObjcOnlyListener l);
public abstract void callForJava(@CheckForNull JavaOnlyListener l);
private static final class CppProxy extends UsesSingleLanguageListeners
{
private final long nativeRef;
private final AtomicBoolean destroyed = new AtomicBoolean(false);
private CppProxy(long nativeRef)
{
if (nativeRef == 0) throw new RuntimeException("nativeRef is zero");
this.nativeRef = nativeRef;
}
private native void nativeDestroy(long nativeRef);
public void destroy()
{
boolean destroyed = this.destroyed.getAndSet(true);
if (!destroyed) nativeDestroy(this.nativeRef);
}
protected void finalize() throws java.lang.Throwable
{
destroy();
super.finalize();
}
@Override
public void callForObjC(ObjcOnlyListener l)
{
assert !this.destroyed.get() : "trying to use a destroyed object";
native_callForObjC(this.nativeRef, l);
}
private native void native_callForObjC(long _nativeRef, ObjcOnlyListener l);
@Override
public void callForJava(JavaOnlyListener l)
{
assert !this.destroyed.get() : "trying to use a destroyed object";
native_callForJava(this.nativeRef, l);
}
private native void native_callForJava(long _nativeRef, JavaOnlyListener l);
}
}
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#include "NativeJavaOnlyListener.hpp" // my header
namespace djinni_generated {
NativeJavaOnlyListener::NativeJavaOnlyListener() : ::djinni::JniInterface<::testsuite::JavaOnlyListener, NativeJavaOnlyListener>() {}
NativeJavaOnlyListener::~NativeJavaOnlyListener() = default;
NativeJavaOnlyListener::JavaProxy::JavaProxy(JniType j) : Handle(::djinni::jniGetThreadEnv(), j) { }
NativeJavaOnlyListener::JavaProxy::~JavaProxy() = default;
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#pragma once
#include "djinni_support.hpp"
#include "java_only_listener.hpp"
namespace djinni_generated {
class NativeJavaOnlyListener final : ::djinni::JniInterface<::testsuite::JavaOnlyListener, NativeJavaOnlyListener> {
public:
using CppType = std::shared_ptr<::testsuite::JavaOnlyListener>;
using CppOptType = std::shared_ptr<::testsuite::JavaOnlyListener>;
using JniType = jobject;
using Boxed = NativeJavaOnlyListener;
~NativeJavaOnlyListener();
static CppType toCpp(JNIEnv* jniEnv, JniType j) { return ::djinni::JniClass<NativeJavaOnlyListener>::get()._fromJava(jniEnv, j); }
static ::djinni::LocalRef<JniType> fromCppOpt(JNIEnv* jniEnv, const CppOptType& c) { return {jniEnv, ::djinni::JniClass<NativeJavaOnlyListener>::get()._toJava(jniEnv, c)}; }
static ::djinni::LocalRef<JniType> fromCpp(JNIEnv* jniEnv, const CppType& c) { return fromCppOpt(jniEnv, c); }
private:
NativeJavaOnlyListener();
friend ::djinni::JniClass<NativeJavaOnlyListener>;
friend ::djinni::JniInterface<::testsuite::JavaOnlyListener, NativeJavaOnlyListener>;
class JavaProxy final : ::djinni::JavaProxyHandle<JavaProxy>, public ::testsuite::JavaOnlyListener
{
public:
JavaProxy(JniType j);
~JavaProxy();
private:
friend ::djinni::JniInterface<::testsuite::JavaOnlyListener, ::djinni_generated::NativeJavaOnlyListener>;
};
const ::djinni::GlobalRef<jclass> clazz { ::djinni::jniFindClass("com/dropbox/djinni/test/JavaOnlyListener") };
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#include "NativeObjcOnlyListener.hpp" // my header
namespace djinni_generated {
NativeObjcOnlyListener::NativeObjcOnlyListener() : ::djinni::JniInterface<::testsuite::ObjcOnlyListener, NativeObjcOnlyListener>() {}
NativeObjcOnlyListener::~NativeObjcOnlyListener() = default;
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#pragma once
#include "djinni_support.hpp"
#include "objc_only_listener.hpp"
namespace djinni_generated {
class NativeObjcOnlyListener final : ::djinni::JniInterface<::testsuite::ObjcOnlyListener, NativeObjcOnlyListener> {
public:
using CppType = std::shared_ptr<::testsuite::ObjcOnlyListener>;
using CppOptType = std::shared_ptr<::testsuite::ObjcOnlyListener>;
using JniType = jobject;
using Boxed = NativeObjcOnlyListener;
~NativeObjcOnlyListener();
static CppType toCpp(JNIEnv* jniEnv, JniType j) { return ::djinni::JniClass<NativeObjcOnlyListener>::get()._fromJava(jniEnv, j); }
static ::djinni::LocalRef<JniType> fromCppOpt(JNIEnv* jniEnv, const CppOptType& c) { return {jniEnv, ::djinni::JniClass<NativeObjcOnlyListener>::get()._toJava(jniEnv, c)}; }
static ::djinni::LocalRef<JniType> fromCpp(JNIEnv* jniEnv, const CppType& c) { return fromCppOpt(jniEnv, c); }
private:
NativeObjcOnlyListener();
friend ::djinni::JniClass<NativeObjcOnlyListener>;
friend ::djinni::JniInterface<::testsuite::ObjcOnlyListener, NativeObjcOnlyListener>;
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#include "NativeUsesSingleLanguageListeners.hpp" // my header
#include "NativeJavaOnlyListener.hpp"
#include "NativeObjcOnlyListener.hpp"
namespace djinni_generated {
NativeUsesSingleLanguageListeners::NativeUsesSingleLanguageListeners() : ::djinni::JniInterface<::testsuite::UsesSingleLanguageListeners, NativeUsesSingleLanguageListeners>("com/dropbox/djinni/test/UsesSingleLanguageListeners$CppProxy") {}
NativeUsesSingleLanguageListeners::~NativeUsesSingleLanguageListeners() = default;
NativeUsesSingleLanguageListeners::JavaProxy::JavaProxy(JniType j) : Handle(::djinni::jniGetThreadEnv(), j) { }
NativeUsesSingleLanguageListeners::JavaProxy::~JavaProxy() = default;
void NativeUsesSingleLanguageListeners::JavaProxy::callForObjC(const std::shared_ptr<::testsuite::ObjcOnlyListener> & c_l) {
auto jniEnv = ::djinni::jniGetThreadEnv();
::djinni::JniLocalScope jscope(jniEnv, 10);
const auto& data = ::djinni::JniClass<::djinni_generated::NativeUsesSingleLanguageListeners>::get();
jniEnv->CallVoidMethod(Handle::get().get(), data.method_callForObjC,
::djinni::get(::djinni_generated::NativeObjcOnlyListener::fromCpp(jniEnv, c_l)));
::djinni::jniExceptionCheck(jniEnv);
}
void NativeUsesSingleLanguageListeners::JavaProxy::callForJava(const std::shared_ptr<::testsuite::JavaOnlyListener> & c_l) {
auto jniEnv = ::djinni::jniGetThreadEnv();
::djinni::JniLocalScope jscope(jniEnv, 10);
const auto& data = ::djinni::JniClass<::djinni_generated::NativeUsesSingleLanguageListeners>::get();
jniEnv->CallVoidMethod(Handle::get().get(), data.method_callForJava,
::djinni::get(::djinni_generated::NativeJavaOnlyListener::fromCpp(jniEnv, c_l)));
::djinni::jniExceptionCheck(jniEnv);
}
CJNIEXPORT void JNICALL Java_com_dropbox_djinni_test_UsesSingleLanguageListeners_00024CppProxy_nativeDestroy(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef)
{
try {
DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);
delete reinterpret_cast<djinni::CppProxyHandle<::testsuite::UsesSingleLanguageListeners>*>(nativeRef);
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, )
}
CJNIEXPORT void JNICALL Java_com_dropbox_djinni_test_UsesSingleLanguageListeners_00024CppProxy_native_1callForObjC(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef, jobject j_l)
{
try {
DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);
const auto& ref = ::djinni::objectFromHandleAddress<::testsuite::UsesSingleLanguageListeners>(nativeRef);
ref->callForObjC(::djinni_generated::NativeObjcOnlyListener::toCpp(jniEnv, j_l));
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, )
}
CJNIEXPORT void JNICALL Java_com_dropbox_djinni_test_UsesSingleLanguageListeners_00024CppProxy_native_1callForJava(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef, jobject j_l)
{
try {
DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);
const auto& ref = ::djinni::objectFromHandleAddress<::testsuite::UsesSingleLanguageListeners>(nativeRef);
ref->callForJava(::djinni_generated::NativeJavaOnlyListener::toCpp(jniEnv, j_l));
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, )
}
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#pragma once
#include "djinni_support.hpp"
#include "uses_single_language_listeners.hpp"
namespace djinni_generated {
class NativeUsesSingleLanguageListeners final : ::djinni::JniInterface<::testsuite::UsesSingleLanguageListeners, NativeUsesSingleLanguageListeners> {
public:
using CppType = std::shared_ptr<::testsuite::UsesSingleLanguageListeners>;
using CppOptType = std::shared_ptr<::testsuite::UsesSingleLanguageListeners>;
using JniType = jobject;
using Boxed = NativeUsesSingleLanguageListeners;
~NativeUsesSingleLanguageListeners();
static CppType toCpp(JNIEnv* jniEnv, JniType j) { return ::djinni::JniClass<NativeUsesSingleLanguageListeners>::get()._fromJava(jniEnv, j); }
static ::djinni::LocalRef<JniType> fromCppOpt(JNIEnv* jniEnv, const CppOptType& c) { return {jniEnv, ::djinni::JniClass<NativeUsesSingleLanguageListeners>::get()._toJava(jniEnv, c)}; }
static ::djinni::LocalRef<JniType> fromCpp(JNIEnv* jniEnv, const CppType& c) { return fromCppOpt(jniEnv, c); }
private:
NativeUsesSingleLanguageListeners();
friend ::djinni::JniClass<NativeUsesSingleLanguageListeners>;
friend ::djinni::JniInterface<::testsuite::UsesSingleLanguageListeners, NativeUsesSingleLanguageListeners>;
class JavaProxy final : ::djinni::JavaProxyHandle<JavaProxy>, public ::testsuite::UsesSingleLanguageListeners
{
public:
JavaProxy(JniType j);
~JavaProxy();
void callForObjC(const std::shared_ptr<::testsuite::ObjcOnlyListener> & l) override;
void callForJava(const std::shared_ptr<::testsuite::JavaOnlyListener> & l) override;
private:
friend ::djinni::JniInterface<::testsuite::UsesSingleLanguageListeners, ::djinni_generated::NativeUsesSingleLanguageListeners>;
};
const ::djinni::GlobalRef<jclass> clazz { ::djinni::jniFindClass("com/dropbox/djinni/test/UsesSingleLanguageListeners") };
const jmethodID method_callForObjC { ::djinni::jniGetMethodID(clazz.get(), "callForObjC", "(Lcom/dropbox/djinni/test/ObjcOnlyListener;)V") };
const jmethodID method_callForJava { ::djinni::jniGetMethodID(clazz.get(), "callForJava", "(Lcom/dropbox/djinni/test/JavaOnlyListener;)V") };
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#include "java_only_listener.hpp"
#include <memory>
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
@class DBJavaOnlyListener;
namespace djinni_generated {
class JavaOnlyListener
{
public:
using CppType = std::shared_ptr<::testsuite::JavaOnlyListener>;
using CppOptType = std::shared_ptr<::testsuite::JavaOnlyListener>;
using ObjcType = DBJavaOnlyListener*;
using Boxed = JavaOnlyListener;
static CppType toCpp(ObjcType objc);
static ObjcType fromCppOpt(const CppOptType& cpp);
static ObjcType fromCpp(const CppType& cpp) { return fromCppOpt(cpp); }
private:
class ObjcProxy;
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#import "DBJavaOnlyListener.h"
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
namespace djinni_generated {
auto JavaOnlyListener::toCpp(ObjcType objc) -> CppType
{
if (!objc) {
return nullptr;
}
return ::djinni::get_objc_proxy<ObjcProxy>(objc);
}
auto JavaOnlyListener::fromCppOpt(const CppOptType& cpp) -> ObjcType
{
if (!cpp) {
return nil;
}
return ::djinni::get_cpp_proxy<DBJavaOnlyListener>(cpp);
}
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#import <Foundation/Foundation.h>
@interface DBJavaOnlyListener : NSObject
@end
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#include "objc_only_listener.hpp"
#include <memory>
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
@protocol DBObjcOnlyListener;
namespace djinni_generated {
class ObjcOnlyListener
{
public:
using CppType = std::shared_ptr<::testsuite::ObjcOnlyListener>;
using CppOptType = std::shared_ptr<::testsuite::ObjcOnlyListener>;
using ObjcType = id<DBObjcOnlyListener>;
using Boxed = ObjcOnlyListener;
static CppType toCpp(ObjcType objc);
static ObjcType fromCppOpt(const CppOptType& cpp);
static ObjcType fromCpp(const CppType& cpp) { return fromCppOpt(cpp); }
private:
class ObjcProxy;
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#import "DBObjcOnlyListener+Private.h"
#import "DBObjcOnlyListener.h"
#import "DJIObjcWrapperCache+Private.h"
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
namespace djinni_generated {
class ObjcOnlyListener::ObjcProxy final
: public ::testsuite::ObjcOnlyListener
, public ::djinni::ObjcProxyCache::Handle<ObjcType>
{
public:
using Handle::Handle;
};
} // namespace djinni_generated
namespace djinni_generated {
auto ObjcOnlyListener::toCpp(ObjcType objc) -> CppType
{
if (!objc) {
return nullptr;
}
return ::djinni::get_objc_proxy<ObjcProxy>(objc);
}
auto ObjcOnlyListener::fromCppOpt(const CppOptType& cpp) -> ObjcType
{
if (!cpp) {
return nil;
}
return dynamic_cast<ObjcProxy&>(*cpp).Handle::get();
}
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#import <Foundation/Foundation.h>
@protocol DBObjcOnlyListener
@end
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#include "uses_single_language_listeners.hpp"
#include <memory>
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
@protocol DBUsesSingleLanguageListeners;
namespace djinni_generated {
class UsesSingleLanguageListeners
{
public:
using CppType = std::shared_ptr<::testsuite::UsesSingleLanguageListeners>;
using CppOptType = std::shared_ptr<::testsuite::UsesSingleLanguageListeners>;
using ObjcType = id<DBUsesSingleLanguageListeners>;
using Boxed = UsesSingleLanguageListeners;
static CppType toCpp(ObjcType objc);
static ObjcType fromCppOpt(const CppOptType& cpp);
static ObjcType fromCpp(const CppType& cpp) { return fromCppOpt(cpp); }
private:
class ObjcProxy;
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#import "DBUsesSingleLanguageListeners+Private.h"
#import "DBUsesSingleLanguageListeners.h"
#import "DBJavaOnlyListener+Private.h"
#import "DBObjcOnlyListener+Private.h"
#import "DJICppWrapperCache+Private.h"
#import "DJIError.h"
#import "DJIObjcWrapperCache+Private.h"
#include <exception>
#include <utility>
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
@interface DBUsesSingleLanguageListenersCppProxy : NSObject<DBUsesSingleLanguageListeners>
- (id)initWithCpp:(const std::shared_ptr<::testsuite::UsesSingleLanguageListeners>&)cppRef;
@end
@implementation DBUsesSingleLanguageListenersCppProxy {
::djinni::CppProxyCache::Handle<std::shared_ptr<::testsuite::UsesSingleLanguageListeners>> _cppRefHandle;
}
- (id)initWithCpp:(const std::shared_ptr<::testsuite::UsesSingleLanguageListeners>&)cppRef
{
if (self = [super init]) {
_cppRefHandle.assign(cppRef);
}
return self;
}
- (void)callForObjC:(nullable id<DBObjcOnlyListener>)l {
try {
_cppRefHandle.get()->callForObjC(::djinni_generated::ObjcOnlyListener::toCpp(l));
} DJINNI_TRANSLATE_EXCEPTIONS()
}
- (void)callForJava:(nullable id<DBJavaOnlyListener>)l {
try {
_cppRefHandle.get()->callForJava(::djinni_generated::JavaOnlyListener::toCpp(l));
} DJINNI_TRANSLATE_EXCEPTIONS()
}
namespace djinni_generated {
class UsesSingleLanguageListeners::ObjcProxy final
: public ::testsuite::UsesSingleLanguageListeners
, public ::djinni::ObjcProxyCache::Handle<ObjcType>
{
public:
using Handle::Handle;
void callForObjC(const std::shared_ptr<::testsuite::ObjcOnlyListener> & c_l) override
{
@autoreleasepool {
[Handle::get() callForObjC:(::djinni_generated::ObjcOnlyListener::fromCpp(c_l))];
}
}
void callForJava(const std::shared_ptr<::testsuite::JavaOnlyListener> & c_l) override
{
@autoreleasepool {
[Handle::get() callForJava:(::djinni_generated::JavaOnlyListener::fromCpp(c_l))];
}
}
};
} // namespace djinni_generated
namespace djinni_generated {
auto UsesSingleLanguageListeners::toCpp(ObjcType objc) -> CppType
{
if (!objc) {
return nullptr;
}
if ([(id)objc isKindOfClass:[DBUsesSingleLanguageListenersCppProxy class]]) {
return ((DBUsesSingleLanguageListenersCppProxy*)objc)->_cppRefHandle.get();
}
return ::djinni::get_objc_proxy<ObjcProxy>(objc);
}
auto UsesSingleLanguageListeners::fromCppOpt(const CppOptType& cpp) -> ObjcType
{
if (!cpp) {
return nil;
}
if (auto cppPtr = dynamic_cast<ObjcProxy*>(cpp.get())) {
return cppPtr->Handle::get();
}
return ::djinni::get_cpp_proxy<DBUsesSingleLanguageListenersCppProxy>(cpp);
}
} // namespace djinni_generated
@end
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#import <Foundation/Foundation.h>
@protocol DBJavaOnlyListener;
@protocol DBObjcOnlyListener;
/**
* Generating and compiling this makes sure other languages don't break
* on references to interfaces they don't need.
*/
@protocol DBUsesSingleLanguageListeners
- (void)callForObjC:(nullable id<DBObjcOnlyListener>)l;
- (void)callForJava:(nullable id<DBJavaOnlyListener>)l;
@end
...@@ -4,6 +4,9 @@ djinni-output-temp/cpp/record_with_duration_and_derivings.cpp ...@@ -4,6 +4,9 @@ djinni-output-temp/cpp/record_with_duration_and_derivings.cpp
djinni-output-temp/cpp/date_record.hpp djinni-output-temp/cpp/date_record.hpp
djinni-output-temp/cpp/date_record.cpp djinni-output-temp/cpp/date_record.cpp
djinni-output-temp/cpp/map_date_record.hpp djinni-output-temp/cpp/map_date_record.hpp
djinni-output-temp/cpp/objc_only_listener.hpp
djinni-output-temp/cpp/java_only_listener.hpp
djinni-output-temp/cpp/uses_single_language_listeners.hpp
djinni-output-temp/cpp/first_listener.hpp djinni-output-temp/cpp/first_listener.hpp
djinni-output-temp/cpp/second_listener.hpp djinni-output-temp/cpp/second_listener.hpp
djinni-output-temp/cpp/listener_caller.hpp djinni-output-temp/cpp/listener_caller.hpp
...@@ -38,6 +41,9 @@ djinni-output-temp/java/TestDuration.java ...@@ -38,6 +41,9 @@ djinni-output-temp/java/TestDuration.java
djinni-output-temp/java/RecordWithDurationAndDerivings.java djinni-output-temp/java/RecordWithDurationAndDerivings.java
djinni-output-temp/java/DateRecord.java djinni-output-temp/java/DateRecord.java
djinni-output-temp/java/MapDateRecord.java djinni-output-temp/java/MapDateRecord.java
djinni-output-temp/java/ObjcOnlyListener.java
djinni-output-temp/java/JavaOnlyListener.java
djinni-output-temp/java/UsesSingleLanguageListeners.java
djinni-output-temp/java/FirstListener.java djinni-output-temp/java/FirstListener.java
djinni-output-temp/java/SecondListener.java djinni-output-temp/java/SecondListener.java
djinni-output-temp/java/ListenerCaller.java djinni-output-temp/java/ListenerCaller.java
...@@ -71,6 +77,12 @@ djinni-output-temp/jni/NativeDateRecord.hpp ...@@ -71,6 +77,12 @@ djinni-output-temp/jni/NativeDateRecord.hpp
djinni-output-temp/jni/NativeDateRecord.cpp djinni-output-temp/jni/NativeDateRecord.cpp
djinni-output-temp/jni/NativeMapDateRecord.hpp djinni-output-temp/jni/NativeMapDateRecord.hpp
djinni-output-temp/jni/NativeMapDateRecord.cpp djinni-output-temp/jni/NativeMapDateRecord.cpp
djinni-output-temp/jni/NativeObjcOnlyListener.hpp
djinni-output-temp/jni/NativeObjcOnlyListener.cpp
djinni-output-temp/jni/NativeJavaOnlyListener.hpp
djinni-output-temp/jni/NativeJavaOnlyListener.cpp
djinni-output-temp/jni/NativeUsesSingleLanguageListeners.hpp
djinni-output-temp/jni/NativeUsesSingleLanguageListeners.cpp
djinni-output-temp/jni/NativeFirstListener.hpp djinni-output-temp/jni/NativeFirstListener.hpp
djinni-output-temp/jni/NativeFirstListener.cpp djinni-output-temp/jni/NativeFirstListener.cpp
djinni-output-temp/jni/NativeSecondListener.hpp djinni-output-temp/jni/NativeSecondListener.hpp
...@@ -127,6 +139,9 @@ djinni-output-temp/objc/DBDateRecord.h ...@@ -127,6 +139,9 @@ djinni-output-temp/objc/DBDateRecord.h
djinni-output-temp/objc/DBDateRecord.mm djinni-output-temp/objc/DBDateRecord.mm
djinni-output-temp/objc/DBMapDateRecord.h djinni-output-temp/objc/DBMapDateRecord.h
djinni-output-temp/objc/DBMapDateRecord.mm djinni-output-temp/objc/DBMapDateRecord.mm
djinni-output-temp/objc/DBObjcOnlyListener.h
djinni-output-temp/objc/DBJavaOnlyListener.h
djinni-output-temp/objc/DBUsesSingleLanguageListeners.h
djinni-output-temp/objc/DBFirstListener.h djinni-output-temp/objc/DBFirstListener.h
djinni-output-temp/objc/DBSecondListener.h djinni-output-temp/objc/DBSecondListener.h
djinni-output-temp/objc/DBListenerCaller.h djinni-output-temp/objc/DBListenerCaller.h
...@@ -174,6 +189,12 @@ djinni-output-temp/objc/DBDateRecord+Private.h ...@@ -174,6 +189,12 @@ djinni-output-temp/objc/DBDateRecord+Private.h
djinni-output-temp/objc/DBDateRecord+Private.mm djinni-output-temp/objc/DBDateRecord+Private.mm
djinni-output-temp/objc/DBMapDateRecord+Private.h djinni-output-temp/objc/DBMapDateRecord+Private.h
djinni-output-temp/objc/DBMapDateRecord+Private.mm djinni-output-temp/objc/DBMapDateRecord+Private.mm
djinni-output-temp/objc/DBObjcOnlyListener+Private.h
djinni-output-temp/objc/DBObjcOnlyListener+Private.mm
djinni-output-temp/objc/DBJavaOnlyListener+Private.h
djinni-output-temp/objc/DBJavaOnlyListener+Private.mm
djinni-output-temp/objc/DBUsesSingleLanguageListeners+Private.h
djinni-output-temp/objc/DBUsesSingleLanguageListeners+Private.mm
djinni-output-temp/objc/DBFirstListener+Private.h djinni-output-temp/objc/DBFirstListener+Private.h
djinni-output-temp/objc/DBFirstListener+Private.mm djinni-output-temp/objc/DBFirstListener+Private.mm
djinni-output-temp/objc/DBSecondListener+Private.h djinni-output-temp/objc/DBSecondListener+Private.h
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment