diff --git a/compiler/resolution/functionResolution.cpp b/compiler/resolution/functionResolution.cpp index 0012ae2821ff..69e4e6cce56c 100644 --- a/compiler/resolution/functionResolution.cpp +++ b/compiler/resolution/functionResolution.cpp @@ -5616,6 +5616,41 @@ static void resolveInitField(CallExpr* call) { resolveSetMember(call); // Can we remove some of the above with this? } +// Should this be public, like isNilableClassType() ? +static bool isUnmanagedClass(Type* t) { + if (DecoratedClassType* dt = toDecoratedClassType(t)) + if (dt->isUnmanaged()) + return true; + return false; +} + +// Todo: ideally this would be simply something like: +// isChapelManagedType(t) || isChapelBorrowedType(t) +static bool isOwnedOrSharedOrBorrowed(Type* t) { + if (isClass(t)) + return true; // borrowed, non-nilable + + if (DecoratedClassType* dt = toDecoratedClassType(t)) + if (! dt->isUnmanaged()) + return true; // anything not unmanaged + + if (isManagedPtrType(t)) + return true; // owned or shared + + return false; +} + +static void checkMoveIntoClass(CallExpr* call, Type* lhs, Type* rhs) { + if (! fLegacyNilableClasses && + isNonNilableClassType(lhs) && isNilableClassType(rhs)) + USR_FATAL(call, "cannot assign to non-nilable %s from nilable %s", + toString(lhs), toString(rhs)); + + if (isUnmanagedClass(lhs) && isOwnedOrSharedOrBorrowed(rhs)) + USR_FATAL(call, "cannot assign to %s from %s", + toString(lhs), toString(rhs)); +} + /************************************* | ************************************** * * * This handles expressions of the form * @@ -5687,6 +5722,10 @@ static void resolveInitVar(CallExpr* call) { isSingleType(src->getValType()) || (targetType->symbol->hasFlag(FLAG_TUPLE) && mismatch) || (isRecord(targetType->getValType()) == false && mismatch)) { + + if (mismatch) + checkMoveIntoClass(call, targetType->getValType(), src->getValType()); + VarSymbol* tmp = newTemp(primCoerceTmpName, targetType); tmp->addFlag(FLAG_EXPR_TEMP); diff --git a/modules/internal/OwnedObject.chpl b/modules/internal/OwnedObject.chpl index 3f667ff5579b..fb42b79b405b 100644 --- a/modules/internal/OwnedObject.chpl +++ b/modules/internal/OwnedObject.chpl @@ -245,16 +245,37 @@ module OwnedObject { refer to `nil` after this call. */ proc init=(pragma "leaves arg nil" pragma "nil from arg" ref src:_owned) { + if isNonNilableClass(this.type) && isNilableClass(src) && + !chpl_legacyNilClasses + then + compilerError("cannot create a non-nilable owned variable from a nilable class instance"); + // Use 'this.type.chpl_t' in case RHS is a subtype this.chpl_t = this.type.chpl_t; this.chpl_p = src.release(); + this.complete(); + } + + proc init=(src: shared) { + compilerError("cannot create an owned variable from a shared class instance"); + this.chpl_t = int; //dummy + } + + proc init=(src: borrowed) { + compilerError("cannot create an owned variable from a borrowed class instance"); + this.chpl_t = int; //dummy + } + + proc init=(src: unmanaged) { + compilerError("cannot create an owned variable from an unmanaged class instance"); + this.chpl_t = int; //dummy } pragma "no doc" proc init=(src : _nilType) { this.init(this.type.chpl_t); - if _to_nilable(chpl_t) != chpl_t && !chpl_legacyNilClasses { + if isNonNilableClass(chpl_t) && !chpl_legacyNilClasses { compilerError("Assigning non-nilable owned to nil"); } } diff --git a/modules/internal/SharedObject.chpl b/modules/internal/SharedObject.chpl index b2e851ee0400..a909415280fd 100644 --- a/modules/internal/SharedObject.chpl +++ b/modules/internal/SharedObject.chpl @@ -274,6 +274,11 @@ module SharedObject { // var s : shared = ownedThing; pragma "no doc" proc init=(pragma "nil from arg" in take: owned) { + if isNonNilableClass(this.type) && isNilableClass(take) && + !chpl_legacyNilClasses + then + compilerError("cannot create a non-nilable shared variable from a nilable class instance"); + this.init(take); } @@ -283,6 +288,11 @@ module SharedObject { These will share responsibility for managing the instance. */ proc init=(pragma "nil from arg" const ref src:_shared(?)) { + if isNonNilableClass(this.type) && isNilableClass(src) && + !chpl_legacyNilClasses + then + compilerError("cannot create a non-nilable shared variable from a nilable class instance"); + this.chpl_t = this.type.chpl_t; this.chpl_p = src.chpl_p; this.chpl_pn = src.chpl_pn; @@ -293,6 +303,16 @@ module SharedObject { this.chpl_pn!.retain(); } + proc init=(src: borrowed) { + compilerError("cannot create a shared variable from a borrowed class instance"); + this.chpl_t = int; //dummy + } + + proc init=(src: unmanaged) { + compilerError("cannot create a shared variable from an unmanaged class instance"); + this.chpl_t = int; //dummy + } + proc init=(src : _nilType) { this.init(this.type.chpl_t); diff --git a/test/classes/delete-free/lifetimes/record-owns.chpl b/test/classes/delete-free/lifetimes/record-owns.chpl index 47d0171b5925..ee1d4bef08c8 100644 --- a/test/classes/delete-free/lifetimes/record-owns.chpl +++ b/test/classes/delete-free/lifetimes/record-owns.chpl @@ -26,7 +26,7 @@ class MyClass { } record RMyClass { - var c:owned MyClass; + var c:owned MyClass?; proc init() { this.c = new owned(nil:unmanaged MyClass?); } diff --git a/test/classes/errors/nilability-generate.chpl b/test/classes/errors/nilability-generate.chpl new file mode 100644 index 000000000000..cfa07c79aa1d --- /dev/null +++ b/test/classes/errors/nilability-generate.chpl @@ -0,0 +1,147 @@ +/* +This script generates the various combinations of lhs and rhs class types +for `lhs = rhs` in various contexts of initialization/assignment, fields/ +vars, etc. + +It is always an error upon --no-legacy-nilable-classes when +`lhs` is non-nilable while `rhs` is nilable or `nil`. + +It is always OK when `lhs` is nilable and `rhs` is `nil`. + +Otherwise, `lhs` and `rhs` are OK for nilability. Then, an error is given +for the combinations of memory management that are not "ok" in this table: + + | lhs | owned | shared | borrowed | unmanaged | + | :-------- | :---: | :----: | :------: | :-------: | + | owned | ok | | | | + | shared | ok | ok | | | + | borrowed | ok | ok | ok | ok | + | unmanaged | | | | ok | +*/ + +use FileSystem; + +enum MM { mOwn, mShr, mBor, mUnm, mNil }; +use MM; + +const allM = mOwn..mUnm; +const allMnil = mOwn..mNil; +proc isNil(arg:MM) return arg==mNil; + +// Is 'lhs = rhs' OK w.r.t. memory management? +const mmOK = makeMMOK(); + +private proc makeMMOK() { + var result: [allM, allMnil] bool; + proc ok(lhs:MM, rhs:MM) { result[lhs,rhs] = true; } + proc er(lhs:MM, rhs:MM) { result[lhs,rhs] = false; } //no-op, really + + // See the above table; plus a row for mNil. + ok(mOwn,mOwn); er(mOwn,mShr); er(mOwn,mBor); er(mOwn,mUnm); ok(mOwn,mNil); + ok(mShr,mOwn); ok(mShr,mShr); er(mShr,mBor); er(mShr,mUnm); ok(mShr,mNil); + ok(mBor,mOwn); ok(mBor,mShr); ok(mBor,mBor); ok(mBor,mUnm); ok(mBor,mNil); + er(mUnm,mOwn); er(mUnm,mShr); er(mUnm,mBor); ok(mUnm,mUnm); ok(mUnm,mNil); + + return result; +} + +///////////////////////////////////////////////////////////////////////////// + +proc MM.strm { + select this { + when mOwn do return "owned"; + when mShr do return "shared"; + when mBor do return "borrowed"; + when mUnm do return "unmanaged"; + when mNil do return "nil"; + } + return ""; +} + +proc bool.strn return if this then "oknil" else "nonnil"; + +proc str(nlb:bool, mm:MM) return mm.strm + if nlb then "?" else "!"; + +proc errstr(errNlb:bool, errM:bool) return + if errNlb then + if errM then "errors: nlb, mm" else "error: nlb" + else + if errM then "error: mm" else "ok"; + +///////////////////////////////////////////////////////////////////////////// + +proc checkConfig(lhsNlb: bool, lhsM: MM, rhsNlb: bool, rhsM: MM, + skipIfNonNilableNil: bool) +{ + assert(lhsM != mNil); + if rhsM == mNil && ! rhsNlb { + if skipIfNonNilableNil then return true; + else halt("invalid combination"); + } + return false; +// another option: rhsNlb = rhsNlbArg | rhsM == nil; +} + +config const ivDir = "nilability-init-var"; + +proc cInitVar(lhsNlb: bool, lhsM: MM, rhsNlb: bool, rhsM: MM, + skipIfNNNil = false) +{ + if checkConfig(lhsNlb, lhsM, rhsNlb, rhsM, skipIfNNNil) then return; + const errNlb = !lhsNlb && rhsNlb; + const errM = ! mmOK(lhsM, rhsM); + const errS = errstr(errNlb, errM); + + var path = "init-var-%s-%s-from-%s-%s".format( + lhsNlb.strn, lhsM.strm, rhsNlb.strn, rhsM.strm); + writeln(path); + if ! ivDir.isEmpty() { + mkdir(ivDir, parents=true); path = ivDir + "/" + path; } + var chan = open(path + ".chpl", iomode.cw).writer(); + proc write(args...) { chan.writef((...args)); } + + var rhsDef = "", rhsUse = "rhs"; + if rhsM == mNil then rhsUse = "nil"; + else if rhsNlb then rhsDef = 'var rhs: %s MyClass?;'.format(rhsM.strm); + else rhsDef = 'var rhs = new %s MyClass();'.format(rhsM.strm); + + var lhsQ = if lhsNlb then "?" else ""; + + var lastStmt = ""; + if errNlb || errM then lastStmt = 'compilerError("done");'; + else if rhsM == mUnm && !rhsNlb then lastStmt = 'delete rhs;'; + + write("// lhs: %s rhs: %s %s\n", + str(lhsNlb, lhsM), str(rhsNlb, rhsM), errS); + write(""" +class MyClass { + var x: int; +} + +%s + +var lhs: %s MyClass%s = %s; + +%s +""", rhsDef, lhsM.strm, lhsQ, rhsUse, lastStmt); + + // now, the .good file + var good = open(path + ".good", iomode.cw).writer(); + if errNlb || errM then + good.writeln(errS); + // else leave it empty +} + +writeln(); writeln(); +writeln("cInitVar: dir=", ivDir); +writeln(); writeln(); +for lhs in allM { + for rhs in allMnil { + cInitVar(true, lhs, true, rhs); + cInitVar(true, lhs, false, rhs, true); + cInitVar(false, lhs, true, rhs); + cInitVar(false, lhs, false, rhs, true); + writeln(); + } + writeln(); +} diff --git a/test/classes/errors/nilability-generate.notest b/test/classes/errors/nilability-generate.notest new file mode 100644 index 000000000000..45b8e422b214 --- /dev/null +++ b/test/classes/errors/nilability-generate.notest @@ -0,0 +1 @@ +This is a script to generate tests. diff --git a/test/classes/errors/nilability-init-var/COMPOPTS b/test/classes/errors/nilability-init-var/COMPOPTS new file mode 100644 index 000000000000..567079f94ba0 --- /dev/null +++ b/test/classes/errors/nilability-init-var/COMPOPTS @@ -0,0 +1 @@ +--no-codegen --no-legacy-nilable-classes diff --git a/test/classes/errors/nilability-init-var/NOEXEC b/test/classes/errors/nilability-init-var/NOEXEC new file mode 100644 index 000000000000..88bd18ed0ef7 --- /dev/null +++ b/test/classes/errors/nilability-init-var/NOEXEC @@ -0,0 +1 @@ +Save some C compilation time - do not execute these tests. diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..099bc2fb8074 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: borrowed! ok + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: borrowed MyClass = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-borrowed.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-owned.chpl new file mode 100644 index 000000000000..919fffc9a6be --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: owned! ok + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: borrowed MyClass = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-shared.chpl new file mode 100644 index 000000000000..a01766bc9b2f --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: shared! ok + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: borrowed MyClass = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-shared.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..fc4d4777942c --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: unmanaged! ok + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: borrowed MyClass = rhs; + +delete rhs; diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..b30c582501d4 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: borrowed? error: nlb + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: borrowed MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-borrowed.good new file mode 100644 index 000000000000..8347809474a9 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-borrowed.good @@ -0,0 +1 @@ +init-var-nonnil-borrowed-from-oknil-borrowed.chpl:9: error: cannot assign to non-nilable borrowed MyClass from nilable borrowed MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-nil.chpl new file mode 100644 index 000000000000..0f6f7bbcebcf --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: nil? error: nlb + +class MyClass { + var x: int; +} + + + +var lhs: borrowed MyClass = nil; + +//todo: uncomment this without changing .good: compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-nil.good new file mode 100644 index 000000000000..65f71a9d8973 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-nil.good @@ -0,0 +1 @@ +init-var-nonnil-borrowed-from-oknil-nil.chpl:9: error: cannot assign to borrowed MyClass from nil diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-owned.chpl new file mode 100644 index 000000000000..ec2c4589f90d --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: owned? error: nlb + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: borrowed MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-owned.good new file mode 100644 index 000000000000..b2b3eaad7f75 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-owned.good @@ -0,0 +1 @@ +init-var-nonnil-borrowed-from-oknil-owned.chpl:9: error: cannot assign to non-nilable borrowed MyClass from nilable owned MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-shared.chpl new file mode 100644 index 000000000000..da24cb69144b --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: shared? error: nlb + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: borrowed MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-shared.good new file mode 100644 index 000000000000..8f59c528b523 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-shared.good @@ -0,0 +1 @@ +init-var-nonnil-borrowed-from-oknil-shared.chpl:9: error: cannot assign to non-nilable borrowed MyClass from nilable shared MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..179aa8792eae --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed! rhs: unmanaged? error: nlb + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: borrowed MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-unmanaged.good new file mode 100644 index 000000000000..faf89fc41375 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-borrowed-from-oknil-unmanaged.good @@ -0,0 +1 @@ +init-var-nonnil-borrowed-from-oknil-unmanaged.chpl:9: error: cannot assign to non-nilable borrowed MyClass from nilable unmanaged MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..216fd166cba0 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: borrowed! error: mm + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: owned MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-borrowed.good new file mode 100644 index 000000000000..be1e3d4dc863 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-borrowed.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-nonnil-borrowed.chpl:9: error: cannot create an owned variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-owned.chpl new file mode 100644 index 000000000000..91da6db8fea0 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: owned! ok + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: owned MyClass = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-shared.chpl new file mode 100644 index 000000000000..a3eff31ade69 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: shared! error: mm + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: owned MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-shared.good new file mode 100644 index 000000000000..76bc62edbe71 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-shared.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-nonnil-shared.chpl:9: error: cannot create an owned variable from a shared class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..2ed8c82ca91f --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: unmanaged! error: mm + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: owned MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..9a1bd32aa0b1 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-nonnil-unmanaged.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-nonnil-unmanaged.chpl:9: error: cannot create an owned variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..dc9ad15801c3 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: borrowed? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: owned MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-borrowed.good new file mode 100644 index 000000000000..db96ec1d17b9 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-borrowed.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-oknil-borrowed.chpl:9: error: cannot create an owned variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-nil.chpl new file mode 100644 index 000000000000..d35247966bf3 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: nil? error: nlb + +class MyClass { + var x: int; +} + + + +var lhs: owned MyClass = nil; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-nil.good new file mode 100644 index 000000000000..6305c55234b7 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-nil.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-oknil-nil.chpl:9: error: Assigning non-nilable owned to nil diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-owned.chpl new file mode 100644 index 000000000000..5f9bceb9b84e --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: owned? error: nlb + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: owned MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-owned.good new file mode 100644 index 000000000000..18542d477a23 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-owned.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-oknil-owned.chpl:9: error: cannot create a non-nilable owned variable from a nilable class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-shared.chpl new file mode 100644 index 000000000000..553eb9fb02bf --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: shared? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: owned MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-shared.good new file mode 100644 index 000000000000..3697a35e802e --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-shared.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-oknil-shared.chpl:9: error: cannot create an owned variable from a shared class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..62ce46582984 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: owned! rhs: unmanaged? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: owned MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-unmanaged.good new file mode 100644 index 000000000000..59fc4b8d424b --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-owned-from-oknil-unmanaged.good @@ -0,0 +1 @@ +init-var-nonnil-owned-from-oknil-unmanaged.chpl:9: error: cannot create an owned variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..0fe0daf10566 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: borrowed! error: mm + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: shared MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-borrowed.good new file mode 100644 index 000000000000..528505a765b2 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-borrowed.good @@ -0,0 +1 @@ +init-var-nonnil-shared-from-nonnil-borrowed.chpl:9: error: cannot create a shared variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-owned.chpl new file mode 100644 index 000000000000..f7ee70f7bf80 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: owned! ok + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: shared MyClass = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-shared.chpl new file mode 100644 index 000000000000..4492cddcb376 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: shared! ok + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: shared MyClass = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-shared.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..ba99c900ec82 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: unmanaged! error: mm + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: shared MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..01522db88281 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-nonnil-unmanaged.good @@ -0,0 +1 @@ +init-var-nonnil-shared-from-nonnil-unmanaged.chpl:9: error: cannot create a shared variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..6a6ee53c27eb --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: borrowed? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: shared MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-borrowed.good new file mode 100644 index 000000000000..f3d753a0446c --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-borrowed.good @@ -0,0 +1 @@ +init-var-nonnil-shared-from-oknil-borrowed.chpl:9: error: cannot create a shared variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-nil.chpl new file mode 100644 index 000000000000..216fcfe2ea7a --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: nil? error: nlb + +class MyClass { + var x: int; +} + + + +var lhs: shared MyClass = nil; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-nil.good new file mode 100644 index 000000000000..e2517923b4c9 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-nil.good @@ -0,0 +1 @@ +init-var-nonnil-shared-from-oknil-nil.chpl:9: error: Assigning non-nilable shared to nil diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-owned.chpl new file mode 100644 index 000000000000..5dd9c8e06262 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: owned? error: nlb + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: shared MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-owned.good new file mode 100644 index 000000000000..3c47f1eae7e8 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-owned.good @@ -0,0 +1 @@ +init-var-nonnil-shared-from-oknil-owned.chpl:9: error: cannot create a non-nilable shared variable from a nilable class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-shared.chpl new file mode 100644 index 000000000000..138b2d4ce1b8 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: shared? error: nlb + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: shared MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-shared.good new file mode 100644 index 000000000000..bc7c6a6b2310 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-shared.good @@ -0,0 +1 @@ +init-var-nonnil-shared-from-oknil-shared.chpl:9: error: cannot create a non-nilable shared variable from a nilable class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..588223757ee6 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: shared! rhs: unmanaged? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: shared MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-unmanaged.good new file mode 100644 index 000000000000..e296c7cabda6 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-shared-from-oknil-unmanaged.good @@ -0,0 +1 @@ +init-var-nonnil-shared-from-oknil-unmanaged.chpl:9: error: cannot create a shared variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..93e536ef010a --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: borrowed! error: mm + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: unmanaged MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-borrowed.good new file mode 100644 index 000000000000..0e452d279627 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-borrowed.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-nonnil-borrowed.chpl:9: error: cannot assign to unmanaged MyClass from borrowed MyClass diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-owned.chpl new file mode 100644 index 000000000000..958a159ac90a --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: owned! error: mm + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: unmanaged MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-owned.good new file mode 100644 index 000000000000..948f1937155d --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-owned.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-nonnil-owned.chpl:9: error: cannot assign to unmanaged MyClass from owned MyClass diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-shared.chpl new file mode 100644 index 000000000000..7051c18fb38d --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: shared! error: mm + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: unmanaged MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-shared.good new file mode 100644 index 000000000000..b4ffce528b3e --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-shared.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-nonnil-shared.chpl:9: error: cannot assign to unmanaged MyClass from shared MyClass diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..7edeceb060d6 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: unmanaged! ok + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: unmanaged MyClass = rhs; + +delete rhs; diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..2a1853342c2b --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: borrowed? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: unmanaged MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-borrowed.good new file mode 100644 index 000000000000..e07622cef3a1 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-borrowed.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-oknil-borrowed.chpl:9: error: cannot assign to non-nilable unmanaged MyClass from nilable borrowed MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-nil.chpl new file mode 100644 index 000000000000..523b70a1b94e --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: nil? error: nlb + +class MyClass { + var x: int; +} + + + +var lhs: unmanaged MyClass = nil; + +//todo: uncomment this without changing .good: compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-nil.good new file mode 100644 index 000000000000..26c42ce3a8bc --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-nil.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-oknil-nil.chpl:9: error: cannot assign to unmanaged MyClass from nil diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-owned.chpl new file mode 100644 index 000000000000..f388a947821b --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: owned? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: unmanaged MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-owned.good new file mode 100644 index 000000000000..1c59fdf216a6 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-owned.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-oknil-owned.chpl:9: error: cannot assign to non-nilable unmanaged MyClass from nilable owned MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-shared.chpl new file mode 100644 index 000000000000..ae9c76355c24 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: shared? errors: nlb, mm + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: unmanaged MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-shared.good new file mode 100644 index 000000000000..ae43a823886b --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-shared.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-oknil-shared.chpl:9: error: cannot assign to non-nilable unmanaged MyClass from nilable shared MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..b8039545982b --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged! rhs: unmanaged? error: nlb + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: unmanaged MyClass = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-unmanaged.good new file mode 100644 index 000000000000..cd6644189cc6 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-nonnil-unmanaged-from-oknil-unmanaged.good @@ -0,0 +1 @@ +init-var-nonnil-unmanaged-from-oknil-unmanaged.chpl:9: error: cannot assign to non-nilable unmanaged MyClass from nilable unmanaged MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..c6af719f7804 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: borrowed! ok + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: borrowed MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-borrowed.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-owned.chpl new file mode 100644 index 000000000000..6eac4c568018 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: owned! ok + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: borrowed MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-shared.chpl new file mode 100644 index 000000000000..2b2dde418411 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: shared! ok + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: borrowed MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-shared.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..f5a274fe84ff --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: unmanaged! ok + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: borrowed MyClass? = rhs; + +delete rhs; diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..7eb3a4829d64 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: borrowed? ok + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: borrowed MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-borrowed.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-nil.chpl new file mode 100644 index 000000000000..211dd306524b --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: nil? ok + +class MyClass { + var x: int; +} + + + +var lhs: borrowed MyClass? = nil; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-nil.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-owned.chpl new file mode 100644 index 000000000000..0a8e2ac977c9 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: owned? ok + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: borrowed MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-shared.chpl new file mode 100644 index 000000000000..a41cc13f88a1 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: shared? ok + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: borrowed MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-shared.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..248de6ae9daa --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: borrowed? rhs: unmanaged? ok + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: borrowed MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-borrowed-from-oknil-unmanaged.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..19a3c445ab98 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: borrowed! error: mm + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: owned MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-borrowed.good new file mode 100644 index 000000000000..f45b07edcf76 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-borrowed.good @@ -0,0 +1 @@ +init-var-oknil-owned-from-nonnil-borrowed.chpl:9: error: cannot create an owned variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-owned.chpl new file mode 100644 index 000000000000..99216349e139 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: owned! ok + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: owned MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-shared.chpl new file mode 100644 index 000000000000..a6d3b208cd4a --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: shared! error: mm + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: owned MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-shared.good new file mode 100644 index 000000000000..1ce914597e28 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-shared.good @@ -0,0 +1 @@ +init-var-oknil-owned-from-nonnil-shared.chpl:9: error: cannot create an owned variable from a shared class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..b9bbf8288bab --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: unmanaged! error: mm + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: owned MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..3b1a87b6b79c --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-nonnil-unmanaged.good @@ -0,0 +1 @@ +init-var-oknil-owned-from-nonnil-unmanaged.chpl:9: error: cannot create an owned variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..351b900e1619 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: borrowed? error: mm + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: owned MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-borrowed.good new file mode 100644 index 000000000000..7535f9a20533 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-borrowed.good @@ -0,0 +1 @@ +init-var-oknil-owned-from-oknil-borrowed.chpl:9: error: cannot create an owned variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-nil.chpl new file mode 100644 index 000000000000..9f685870fcb9 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: nil? ok + +class MyClass { + var x: int; +} + + + +var lhs: owned MyClass? = nil; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-nil.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-owned.chpl new file mode 100644 index 000000000000..a0ac64916a2d --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: owned? ok + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: owned MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-shared.chpl new file mode 100644 index 000000000000..31428b8533a5 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: shared? error: mm + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: owned MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-shared.good new file mode 100644 index 000000000000..1726a03503b6 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-shared.good @@ -0,0 +1 @@ +init-var-oknil-owned-from-oknil-shared.chpl:9: error: cannot create an owned variable from a shared class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..96285e676868 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: owned? rhs: unmanaged? error: mm + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: owned MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-unmanaged.good new file mode 100644 index 000000000000..368781a2f0a7 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-owned-from-oknil-unmanaged.good @@ -0,0 +1 @@ +init-var-oknil-owned-from-oknil-unmanaged.chpl:9: error: cannot create an owned variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..2a8973b20448 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: borrowed! error: mm + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: shared MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-borrowed.good new file mode 100644 index 000000000000..6c45512c9344 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-borrowed.good @@ -0,0 +1 @@ +init-var-oknil-shared-from-nonnil-borrowed.chpl:9: error: cannot create a shared variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.bad b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.bad new file mode 100644 index 000000000000..d9136c7a6280 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.bad @@ -0,0 +1 @@ +init-var-oknil-shared-from-nonnil-owned.chpl:9: error: cannot assign expression of type borrowed MyClass to field 'chpl_t' of type borrowed MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.chpl new file mode 100644 index 000000000000..30dac2670935 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: owned! ok + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: shared MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.future b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.future new file mode 100644 index 000000000000..fc5c138f7ad3 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.future @@ -0,0 +1,3 @@ +bug: can't assign to nilable shared from non-nilable owned + +Not only that, but the reported error is unclear. diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-shared.chpl new file mode 100644 index 000000000000..0a0234f7fec4 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: shared! ok + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: shared MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-shared.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..a94dcc58f4ca --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: unmanaged! error: mm + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: shared MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..cc40e9e792f5 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-nonnil-unmanaged.good @@ -0,0 +1 @@ +init-var-oknil-shared-from-nonnil-unmanaged.chpl:9: error: cannot create a shared variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..395a3046b432 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: borrowed? error: mm + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: shared MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-borrowed.good new file mode 100644 index 000000000000..7ead3d8e8ceb --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-borrowed.good @@ -0,0 +1 @@ +init-var-oknil-shared-from-oknil-borrowed.chpl:9: error: cannot create a shared variable from a borrowed class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-nil.chpl new file mode 100644 index 000000000000..939306645c61 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: nil? ok + +class MyClass { + var x: int; +} + + + +var lhs: shared MyClass? = nil; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-nil.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-owned.chpl new file mode 100644 index 000000000000..042208b5dd1e --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: owned? ok + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: shared MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-owned.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-shared.chpl new file mode 100644 index 000000000000..ef85f27d7aa6 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: shared? ok + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: shared MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-shared.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..ce8b757c5c58 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: shared? rhs: unmanaged? error: mm + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: shared MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-unmanaged.good new file mode 100644 index 000000000000..0ebb158fba27 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-shared-from-oknil-unmanaged.good @@ -0,0 +1 @@ +init-var-oknil-shared-from-oknil-unmanaged.chpl:9: error: cannot create a shared variable from an unmanaged class instance diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-borrowed.chpl new file mode 100644 index 000000000000..27b36200d5dc --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: borrowed! error: mm + +class MyClass { + var x: int; +} + +var rhs = new borrowed MyClass(); + +var lhs: unmanaged MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-borrowed.good new file mode 100644 index 000000000000..6402dc046ccc --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-borrowed.good @@ -0,0 +1 @@ +init-var-oknil-unmanaged-from-nonnil-borrowed.chpl:9: error: cannot assign to unmanaged MyClass? from borrowed MyClass diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-owned.chpl new file mode 100644 index 000000000000..32c02ccbc614 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: owned! error: mm + +class MyClass { + var x: int; +} + +var rhs = new owned MyClass(); + +var lhs: unmanaged MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-owned.good new file mode 100644 index 000000000000..3e45ee5dd612 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-owned.good @@ -0,0 +1 @@ +init-var-oknil-unmanaged-from-nonnil-owned.chpl:9: error: cannot assign to unmanaged MyClass? from owned MyClass diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-shared.chpl new file mode 100644 index 000000000000..05fb54a4c280 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: shared! error: mm + +class MyClass { + var x: int; +} + +var rhs = new shared MyClass(); + +var lhs: unmanaged MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-shared.good new file mode 100644 index 000000000000..68bc82b01da0 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-shared.good @@ -0,0 +1 @@ +init-var-oknil-unmanaged-from-nonnil-shared.chpl:9: error: cannot assign to unmanaged MyClass? from shared MyClass diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-unmanaged.chpl new file mode 100644 index 000000000000..9e832b03a7ca --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: unmanaged! ok + +class MyClass { + var x: int; +} + +var rhs = new unmanaged MyClass(); + +var lhs: unmanaged MyClass? = rhs; + +delete rhs; diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-nonnil-unmanaged.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-borrowed.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-borrowed.chpl new file mode 100644 index 000000000000..e4d289f02e68 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-borrowed.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: borrowed? error: mm + +class MyClass { + var x: int; +} + +var rhs: borrowed MyClass?; + +var lhs: unmanaged MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-borrowed.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-borrowed.good new file mode 100644 index 000000000000..818cdd74a6bf --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-borrowed.good @@ -0,0 +1 @@ +init-var-oknil-unmanaged-from-oknil-borrowed.chpl:9: error: cannot assign to unmanaged MyClass? from borrowed MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-nil.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-nil.chpl new file mode 100644 index 000000000000..2093aeddca79 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-nil.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: nil? ok + +class MyClass { + var x: int; +} + + + +var lhs: unmanaged MyClass? = nil; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-nil.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-nil.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-owned.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-owned.chpl new file mode 100644 index 000000000000..288e4c59b260 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-owned.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: owned? error: mm + +class MyClass { + var x: int; +} + +var rhs: owned MyClass?; + +var lhs: unmanaged MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-owned.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-owned.good new file mode 100644 index 000000000000..d7f4083889df --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-owned.good @@ -0,0 +1 @@ +init-var-oknil-unmanaged-from-oknil-owned.chpl:9: error: cannot assign to unmanaged MyClass? from owned MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-shared.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-shared.chpl new file mode 100644 index 000000000000..365d90d5f9f5 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-shared.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: shared? error: mm + +class MyClass { + var x: int; +} + +var rhs: shared MyClass?; + +var lhs: unmanaged MyClass? = rhs; + +compilerError("done"); diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-shared.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-shared.good new file mode 100644 index 000000000000..17869c74f214 --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-shared.good @@ -0,0 +1 @@ +init-var-oknil-unmanaged-from-oknil-shared.chpl:9: error: cannot assign to unmanaged MyClass? from shared MyClass? diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-unmanaged.chpl b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-unmanaged.chpl new file mode 100644 index 000000000000..03572877c0db --- /dev/null +++ b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-unmanaged.chpl @@ -0,0 +1,11 @@ +// lhs: unmanaged? rhs: unmanaged? ok + +class MyClass { + var x: int; +} + +var rhs: unmanaged MyClass?; + +var lhs: unmanaged MyClass? = rhs; + + diff --git a/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-unmanaged.good b/test/classes/errors/nilability-init-var/init-var-oknil-unmanaged-from-oknil-unmanaged.good new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/classes/nilability/coerce-away-nilable.good b/test/classes/nilability/coerce-away-nilable.good index 882f923c37d2..0b166ec6d7c3 100644 --- a/test/classes/nilability/coerce-away-nilable.good +++ b/test/classes/nilability/coerce-away-nilable.good @@ -1 +1 @@ -coerce-away-nilable.chpl:6: error: Cannot assign to borrowed MyClass from borrowed MyClass? +coerce-away-nilable.chpl:6: error: cannot assign to non-nilable borrowed MyClass from nilable borrowed MyClass?