mirror of
https://github.com/FabInfra/capnproto-dotnetcore_Runtime.git
synced 2025-03-12 23:01:44 +01:00
162 lines
4.2 KiB
Plaintext
162 lines
4.2 KiB
Plaintext
|
# Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors
|
||
|
# Licensed under the MIT License:
|
||
|
#
|
||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
|
# of this software and associated documentation files (the "Software"), to deal
|
||
|
# in the Software without restriction, including without limitation the rights
|
||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
|
# copies of the Software, and to permit persons to whom the Software is
|
||
|
# furnished to do so, subject to the following conditions:
|
||
|
#
|
||
|
# The above copyright notice and this permission notice shall be included in
|
||
|
# all copies or substantial portions of the Software.
|
||
|
#
|
||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||
|
# THE SOFTWARE.
|
||
|
|
||
|
# This file is intended to test that various error cases are detected as errors. The error
|
||
|
# output is matched against a golden file. The file name has the .nobuild extension to make
|
||
|
# sure that a build system which automatically builds .capnp files does not try to build this one.
|
||
|
|
||
|
#
|
||
|
|
||
|
@0xccd0890aa4926a9b;
|
||
|
# Can't really test the missing-ID error because the output is intentionally unpredictable.
|
||
|
|
||
|
const notType :Int32 = 123;
|
||
|
annotation notFieldAnnotation(struct) :Int32;
|
||
|
annotation fieldAnnotation(field) :Int32;
|
||
|
|
||
|
struct Foo {
|
||
|
dupName @0 :Int32;
|
||
|
dupName @1 :Int32;
|
||
|
dupNumber1 @2 :Int32;
|
||
|
dupNumber2 @2 :Int32;
|
||
|
|
||
|
missingNumber @4 :Int32;
|
||
|
next @5 :Int32;
|
||
|
|
||
|
emptyUnion :union {}
|
||
|
emptyGroup :group {}
|
||
|
|
||
|
singletonUnion :union {
|
||
|
field @6 :Int32;
|
||
|
}
|
||
|
|
||
|
union {
|
||
|
dupName @7 :Int32;
|
||
|
f8 @8 :Int32;
|
||
|
}
|
||
|
union {
|
||
|
f9 @9 :Int32;
|
||
|
f10 @10 :Int32;
|
||
|
}
|
||
|
|
||
|
struct wrongTypeStyle {}
|
||
|
WrongFieldStyle @11 :Int32;
|
||
|
under_score @12 :Int32;
|
||
|
|
||
|
containsStruct :group {
|
||
|
f13 @13 :Int32;
|
||
|
struct CantNestHere {}
|
||
|
}
|
||
|
|
||
|
retroUnion @16! :union {
|
||
|
f14 @14 :Int32;
|
||
|
f15 @15 :Int32;
|
||
|
}
|
||
|
|
||
|
missingColonAndEclamation @18 union {
|
||
|
f19 @19 :Int32;
|
||
|
f20 @20 :Int32;
|
||
|
}
|
||
|
|
||
|
missingExclamation @21 :union {
|
||
|
f22 @22 :Int32;
|
||
|
f23 @23 :Int32;
|
||
|
}
|
||
|
|
||
|
missingColon @24! union {
|
||
|
f19 @25 :Int32;
|
||
|
f20 @26 :Int32;
|
||
|
}
|
||
|
|
||
|
unnamedInNamed :union {
|
||
|
f27 @27 :Int32;
|
||
|
f28 @28 :Int32;
|
||
|
union {
|
||
|
# content is ignored
|
||
|
}
|
||
|
}
|
||
|
|
||
|
listWithoutParam @31 :List;
|
||
|
listWithTooManyParams @32 :List(Int32, Int64);
|
||
|
listAnyPointer @33 :List(AnyPointer);
|
||
|
notAType @34 :notType;
|
||
|
noParams @35 :Foo(Int32);
|
||
|
|
||
|
defaultOutOfRange @36 :Int16 = 1234567;
|
||
|
defaultOutOfRange2 @37 :UInt16 = -1;
|
||
|
defaultWrongType @38 :Text = 123;
|
||
|
defaultWrongType2 @39 :Text = [123];
|
||
|
defaultWrongType3 @40 :Text = (foo = 123, bar = 456);
|
||
|
defaultTooBigToBeNegative @41 :Int64 = -0x8000000000000001;
|
||
|
defaultNotConstant @42 :Int32 = .Foo;
|
||
|
defaultConstantNotQualified @43 :Int32 = notType;
|
||
|
|
||
|
notAnnotation @44 :Int32 $Foo(123);
|
||
|
badAnnotation @45 :Int32 $notFieldAnnotation(123);
|
||
|
notVoidAnnotation @46 :Int32 $fieldAnnotation;
|
||
|
|
||
|
undefinedImport @17 :import "noshuchfile.capnp".Bar;
|
||
|
undefinedAbsolute @47 : .NoSuch;
|
||
|
undefinedRelative @29 :NoSuch;
|
||
|
undefinedMember @30 :Foo.NoSuch;
|
||
|
}
|
||
|
|
||
|
struct Bar {
|
||
|
x @3 :Text;
|
||
|
someGroup :group {
|
||
|
defaultMissingFieldName @2 :Bar = (x = "abcd", 456);
|
||
|
defaultNoSuchField @0 :Bar = (nosuchfield = 123);
|
||
|
defaultGroupMismatch @1 :Bar = (someGroup = 123);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
using Bar;
|
||
|
|
||
|
enum DupEnumerants {
|
||
|
dupName @0;
|
||
|
dupName @1;
|
||
|
dupNumber1 @2;
|
||
|
dupNumber2 @2;
|
||
|
}
|
||
|
|
||
|
const recursive: UInt32 = .recursive;
|
||
|
|
||
|
struct Generic(T, U) {
|
||
|
}
|
||
|
|
||
|
struct UseGeneric {
|
||
|
tooFew @0 :Generic(Text);
|
||
|
tooMany @1 :Generic(Text, Data, List(Int32));
|
||
|
doubleBind @2 :Generic(Text, Data)(Data, Text);
|
||
|
primitiveBinding @3 :Generic(Text, Int32);
|
||
|
}
|
||
|
|
||
|
const embedBadType :UInt32 = embed "binary";
|
||
|
const embedNoSuchFile :Data = embed "no-such-file";
|
||
|
|
||
|
using Baz = import "nosuchfile-unused.capnp".Baz;
|
||
|
# Check that an import in an unused `using` still reports error.
|
||
|
|
||
|
interface TestInterface {
|
||
|
foo @0 (a :UInt32 = null);
|
||
|
}
|