improve tsets.nim, twrong_setconstr.nim and avoid name clashes with compiler sets (#17876)
* improve tests/sets/tsets.nim and avoid name clashes with compiler sets * avoid name clashes in twrong_setconstr.nim and merge into tsets
This commit is contained in:
parent
a424075b5e
commit
198b5e3a7a
2 changed files with 59 additions and 334 deletions
|
|
@ -1,146 +0,0 @@
|
||||||
discard """
|
|
||||||
output: ""
|
|
||||||
"""
|
|
||||||
|
|
||||||
# bug #2880
|
|
||||||
|
|
||||||
type
|
|
||||||
TMsgKind* = enum
|
|
||||||
errUnknown, errIllFormedAstX, errInternal, errCannotOpenFile, errGenerated,
|
|
||||||
errXCompilerDoesNotSupportCpp, errStringLiteralExpected,
|
|
||||||
errIntLiteralExpected, errInvalidCharacterConstant,
|
|
||||||
errClosingTripleQuoteExpected, errClosingQuoteExpected,
|
|
||||||
errTabulatorsAreNotAllowed, errInvalidToken, errLineTooLong,
|
|
||||||
errInvalidNumber, errInvalidNumberOctalCode, errNumberOutOfRange,
|
|
||||||
errNnotAllowedInCharacter, errClosingBracketExpected, errMissingFinalQuote,
|
|
||||||
errIdentifierExpected, errNewlineExpected, errInvalidModuleName,
|
|
||||||
errOperatorExpected, errTokenExpected, errStringAfterIncludeExpected,
|
|
||||||
errRecursiveDependencyX, errOnOrOffExpected, errNoneSpeedOrSizeExpected,
|
|
||||||
errInvalidPragma, errUnknownPragma, errInvalidDirectiveX,
|
|
||||||
errAtPopWithoutPush, errEmptyAsm, errInvalidIndentation,
|
|
||||||
errExceptionExpected, errExceptionAlreadyHandled,
|
|
||||||
errYieldNotAllowedHere, errYieldNotAllowedInTryStmt,
|
|
||||||
errInvalidNumberOfYieldExpr, errCannotReturnExpr, errAttemptToRedefine,
|
|
||||||
errStmtInvalidAfterReturn, errStmtExpected, errInvalidLabel,
|
|
||||||
errInvalidCmdLineOption, errCmdLineArgExpected, errCmdLineNoArgExpected,
|
|
||||||
errInvalidVarSubstitution, errUnknownVar, errUnknownCcompiler,
|
|
||||||
errOnOrOffExpectedButXFound, errOnOffOrListExpectedButXFound,
|
|
||||||
errNoneBoehmRefcExpectedButXFound,
|
|
||||||
errNoneSpeedOrSizeExpectedButXFound, errGuiConsoleOrLibExpectedButXFound,
|
|
||||||
errUnknownOS, errUnknownCPU, errGenOutExpectedButXFound,
|
|
||||||
errArgsNeedRunOption, errInvalidMultipleAsgn, errColonOrEqualsExpected,
|
|
||||||
errExprExpected, errUndeclaredIdentifier, errUseQualifier, errTypeExpected,
|
|
||||||
errSystemNeeds, errExecutionOfProgramFailed, errNotOverloadable,
|
|
||||||
errInvalidArgForX, errStmtHasNoEffect, errXExpectsTypeOrValue,
|
|
||||||
errXExpectsArrayType, errIteratorCannotBeInstantiated, errExprXAmbiguous,
|
|
||||||
errConstantDivisionByZero, errOrdinalTypeExpected,
|
|
||||||
errOrdinalOrFloatTypeExpected, errOverOrUnderflow,
|
|
||||||
errCannotEvalXBecauseIncompletelyDefined, errChrExpectsRange0_255,
|
|
||||||
errDynlibRequiresExportc, errUndeclaredFieldX, errNilAccess,
|
|
||||||
errIndexOutOfBounds, errIndexTypesDoNotMatch, errBracketsInvalidForType,
|
|
||||||
errValueOutOfSetBounds, errFieldInitTwice, errFieldNotInit,
|
|
||||||
errExprXCannotBeCalled, errExprHasNoType, errExprXHasNoType,
|
|
||||||
errCastNotInSafeMode, errExprCannotBeCastedToX, errCommaOrParRiExpected,
|
|
||||||
errCurlyLeOrParLeExpected, errSectionExpected, errRangeExpected,
|
|
||||||
errMagicOnlyInSystem, errPowerOfTwoExpected,
|
|
||||||
errStringMayNotBeEmpty, errCallConvExpected, errProcOnlyOneCallConv,
|
|
||||||
errSymbolMustBeImported, errExprMustBeBool, errConstExprExpected,
|
|
||||||
errDuplicateCaseLabel, errRangeIsEmpty, errSelectorMustBeOfCertainTypes,
|
|
||||||
errSelectorMustBeOrdinal, errOrdXMustNotBeNegative, errLenXinvalid,
|
|
||||||
errWrongNumberOfVariables, errExprCannotBeRaised, errBreakOnlyInLoop,
|
|
||||||
errTypeXhasUnknownSize, errConstNeedsConstExpr, errConstNeedsValue,
|
|
||||||
errResultCannotBeOpenArray, errSizeTooBig, errSetTooBig,
|
|
||||||
errBaseTypeMustBeOrdinal, errInheritanceOnlyWithNonFinalObjects,
|
|
||||||
errInheritanceOnlyWithEnums, errIllegalRecursionInTypeX,
|
|
||||||
errCannotInstantiateX, errExprHasNoAddress, errXStackEscape,
|
|
||||||
errVarForOutParamNeeded,
|
|
||||||
errPureTypeMismatch, errTypeMismatch, errButExpected, errButExpectedX,
|
|
||||||
errAmbiguousCallXYZ, errWrongNumberOfArguments,
|
|
||||||
errXCannotBePassedToProcVar,
|
|
||||||
errXCannotBeInParamDecl, errPragmaOnlyInHeaderOfProc, errImplOfXNotAllowed,
|
|
||||||
errImplOfXexpected, errNoSymbolToBorrowFromFound, errDiscardValueX,
|
|
||||||
errInvalidDiscard, errIllegalConvFromXtoY, errCannotBindXTwice,
|
|
||||||
errInvalidOrderInArrayConstructor,
|
|
||||||
errInvalidOrderInEnumX, errEnumXHasHoles, errExceptExpected, errInvalidTry,
|
|
||||||
errOptionExpected, errXisNoLabel, errNotAllCasesCovered,
|
|
||||||
errUnknownSubstitionVar, errComplexStmtRequiresInd, errXisNotCallable,
|
|
||||||
errNoPragmasAllowedForX, errNoGenericParamsAllowedForX,
|
|
||||||
errInvalidParamKindX, errDefaultArgumentInvalid, errNamedParamHasToBeIdent,
|
|
||||||
errNoReturnTypeForX, errConvNeedsOneArg, errInvalidPragmaX,
|
|
||||||
errXNotAllowedHere, errInvalidControlFlowX,
|
|
||||||
errXisNoType, errCircumNeedsPointer, errInvalidExpression,
|
|
||||||
errInvalidExpressionX, errEnumHasNoValueX, errNamedExprExpected,
|
|
||||||
errNamedExprNotAllowed, errXExpectsOneTypeParam,
|
|
||||||
errArrayExpectsTwoTypeParams, errInvalidVisibilityX, errInitHereNotAllowed,
|
|
||||||
errXCannotBeAssignedTo, errIteratorNotAllowed, errXNeedsReturnType,
|
|
||||||
errNoReturnTypeDeclared,
|
|
||||||
errInvalidCommandX, errXOnlyAtModuleScope,
|
|
||||||
errXNeedsParamObjectType,
|
|
||||||
errTemplateInstantiationTooNested, errInstantiationFrom,
|
|
||||||
errInvalidIndexValueForTuple, errCommandExpectsFilename,
|
|
||||||
errMainModuleMustBeSpecified,
|
|
||||||
errXExpected,
|
|
||||||
errTIsNotAConcreteType,
|
|
||||||
errInvalidSectionStart, errGridTableNotImplemented, errGeneralParseError,
|
|
||||||
errNewSectionExpected, errWhitespaceExpected, errXisNoValidIndexFile,
|
|
||||||
errCannotRenderX, errVarVarTypeNotAllowed, errInstantiateXExplicitly,
|
|
||||||
errOnlyACallOpCanBeDelegator, errUsingNoSymbol,
|
|
||||||
errMacroBodyDependsOnGenericTypes,
|
|
||||||
errDestructorNotGenericEnough,
|
|
||||||
errInlineIteratorsAsProcParams,
|
|
||||||
errXExpectsTwoArguments,
|
|
||||||
errXExpectsObjectTypes, errXcanNeverBeOfThisSubtype, errTooManyIterations,
|
|
||||||
errCannotInterpretNodeX, errFieldXNotFound, errInvalidConversionFromTypeX,
|
|
||||||
errAssertionFailed, errCannotGenerateCodeForX, errXRequiresOneArgument,
|
|
||||||
errUnhandledExceptionX, errCyclicTree, errXisNoMacroOrTemplate,
|
|
||||||
errXhasSideEffects, errIteratorExpected, errLetNeedsInit,
|
|
||||||
errThreadvarCannotInit, errWrongSymbolX, errIllegalCaptureX,
|
|
||||||
errXCannotBeClosure, errXMustBeCompileTime,
|
|
||||||
errCannotInferTypeOfTheLiteral,
|
|
||||||
errCannotInferReturnType,
|
|
||||||
errGenericLambdaNotAllowed,
|
|
||||||
errCompilerDoesntSupportTarget,
|
|
||||||
errUser,
|
|
||||||
warnCannotOpenFile,
|
|
||||||
warnOctalEscape, warnXIsNeverRead, warnXmightNotBeenInit,
|
|
||||||
warnDeprecated, warnConfigDeprecated,
|
|
||||||
warnSmallLshouldNotBeUsed, warnUnknownMagic, warnRedefinitionOfLabel,
|
|
||||||
warnUnknownSubstitutionX, warnLanguageXNotSupported,
|
|
||||||
warnFieldXNotSupported, warnCommentXIgnored,
|
|
||||||
warnNilStatement, warnTypelessParam,
|
|
||||||
warnDifferentHeaps, warnWriteToForeignHeap, warnUnsafeCode,
|
|
||||||
warnEachIdentIsTuple
|
|
||||||
warnProveInit, warnProveField, warnProveIndex, warnGcUnsafe, warnGcUnsafe2,
|
|
||||||
warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed,
|
|
||||||
warnUser,
|
|
||||||
hintSuccess, hintSuccessX,
|
|
||||||
hintLineTooLong, hintXDeclaredButNotUsed, hintConvToBaseNotNeeded,
|
|
||||||
hintConvFromXtoItselfNotNeeded, hintExprAlwaysX, hintQuitCalled,
|
|
||||||
hintProcessing, hintCodeBegin, hintCodeEnd, hintConf, hintPath,
|
|
||||||
hintConditionAlwaysTrue, hintName, hintPattern,
|
|
||||||
hintExecuting, hintLinking, hintDependency,
|
|
||||||
hintSource, hintStackTrace, hintGCStats,
|
|
||||||
hintUser
|
|
||||||
|
|
||||||
const
|
|
||||||
warnMin = warnCannotOpenFile
|
|
||||||
hintMax = high(TMsgKind)
|
|
||||||
|
|
||||||
type
|
|
||||||
TNoteKind = range[warnMin..hintMax] # "notes" are warnings or hints
|
|
||||||
TNoteKinds = set[TNoteKind]
|
|
||||||
|
|
||||||
const
|
|
||||||
NotesVerbosityConst: array[0..0, TNoteKinds] = [
|
|
||||||
{low(TNoteKind)..high(TNoteKind)} - {hintGCStats}]
|
|
||||||
fuckyou = NotesVerbosityConst[0]
|
|
||||||
|
|
||||||
var
|
|
||||||
gNotesFromConst: TNoteKinds = NotesVerbosityConst[0]
|
|
||||||
gNotesFromConst2: TNoteKinds = fuckyou
|
|
||||||
|
|
||||||
if hintGCStats in gNotesFromConst:
|
|
||||||
echo "hintGCStats in gNotesFromConst A"
|
|
||||||
|
|
||||||
if hintGCStats in gNotesFromConst2:
|
|
||||||
echo "hintGCStats in gNotesFromConst B"
|
|
||||||
|
|
@ -1,207 +1,57 @@
|
||||||
discard """
|
# Test builtin sets
|
||||||
output: '''
|
|
||||||
Ha ein F ist in s!
|
|
||||||
false
|
|
||||||
'''
|
|
||||||
"""
|
|
||||||
# Test the handling of sets
|
|
||||||
|
|
||||||
import
|
# xxx these tests are not very good, this should be revisited.
|
||||||
strutils
|
|
||||||
|
when defined nimTestsTsetsGenerate:
|
||||||
|
# to generate enums for this test
|
||||||
|
var ret: string
|
||||||
|
for i in 0..<276:
|
||||||
|
ret.add "k" & $i & ", "
|
||||||
|
echo ret
|
||||||
|
|
||||||
proc testSets(s: var set[char]) =
|
proc testSets(s: var set[char]) =
|
||||||
s = {'A', 'B', 'C', 'E'..'G'} + {'Z'} + s
|
s = {'A', 'B', 'C', 'E'..'G'} + {'Z'} + s
|
||||||
|
|
||||||
# test sets if the first element is different from 0:
|
# test sets if the first element is different from 0:
|
||||||
type
|
block:
|
||||||
TAZ = range['a'..'z']
|
type
|
||||||
TAZset = set[TAZ]
|
TAZ = range['a'..'z']
|
||||||
|
TAZset = set[TAZ]
|
||||||
|
FakeTokType = enum
|
||||||
|
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117, k118, k119, k120, k121, k122, k123, k124, k125, k126, k127, k128, k129, k130, k131, k132, k133, k134, k135, k136, k137, k138, k139, k140, k141, k142, k143, k144, k145, k146, k147, k148, k149, k150, k151, k152, k153, k154, k155, k156, k157, k158, k159, k160, k161, k162, k163, k164, k165, k166, k167, k168, k169, k170, k171, k172, k173, k174, k175, k176, k177, k178, k179, k180, k181, k182, k183, k184, k185, k186, k187, k188, k189, k190, k191, k192, k193, k194, k195, k196, k197, k198, k199, k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, k217, k218, k219, k220, k221, k222, k223, k224, k225, k226, k227, k228, k229, k230, k231, k232, k233, k234, k235, k236, k237, k238, k239, k240, k241, k242, k243, k244, k245, k246, k247, k248, k249
|
||||||
|
FakeTokTypeRange = range[k2..k101]
|
||||||
|
FakeTokTypes = set[FakeTokTypeRange]
|
||||||
|
|
||||||
TTokType* = enum
|
const toktypes: FakeTokTypes = {FakeTokTypeRange(k2)..pred(k64), k72..k74}
|
||||||
tkInvalid, tkEof,
|
|
||||||
tkSymbol,
|
|
||||||
tkAddr, tkAnd, tkAs, tkAsm, tkBlock, tkBreak, tkCase, tkCast, tkConst,
|
|
||||||
tkContinue, tkConverter, tkDiscard, tkDiv, tkElif, tkElse, tkEnd, tkEnum,
|
|
||||||
tkExcept, tkException, tkFinally, tkFor, tkFrom, tkGeneric, tkIf, tkImplies,
|
|
||||||
tkImport, tkIn, tkInclude, tkIs, tkIsnot, tkIterator, tkLambda, tkMacro,
|
|
||||||
tkMethod, tkMod, tkNil, tkNot, tkNotin, tkObject, tkOf, tkOr, tkOut, tkProc,
|
|
||||||
tkPtr, tkRaise, tkRecord, tkRef, tkReturn, tkShl, tkShr, tkTemplate, tkTry,
|
|
||||||
tkType, tkVar, tkWhen, tkWhere, tkWhile, tkWith, tkWithout, tkXor, tkYield,
|
|
||||||
tkIntLit, tkInt8Lit, tkInt16Lit, tkInt32Lit, tkInt64Lit, tkFloatLit,
|
|
||||||
tkFloat32Lit, tkFloat64Lit, tkStrLit, tkRStrLit, tkTripleStrLit, tkCharLit,
|
|
||||||
tkRCharLit, tkParLe, tkParRi, tkBracketLe, tkBracketRi, tkCurlyLe,
|
|
||||||
tkCurlyRi, tkBracketDotLe, tkBracketDotRi,
|
|
||||||
tkCurlyDotLe, tkCurlyDotRi,
|
|
||||||
tkParDotLe, tkParDotRi,
|
|
||||||
tkComma, tkSemiColon, tkColon, tkEquals, tkDot, tkDotDot, tkHat, tkOpr,
|
|
||||||
tkComment, tkAccent, tkInd, tkSad, tkDed,
|
|
||||||
tkSpaces, tkInfixOpr, tkPrefixOpr, tkPostfixOpr
|
|
||||||
TTokTypeRange = range[tkSymbol..tkDed]
|
|
||||||
TTokTypes* = set[TTokTypeRange]
|
|
||||||
|
|
||||||
const
|
var
|
||||||
toktypes: TTokTypes = {TTokTypeRange(tkSymbol)..pred(tkIntLit),
|
s: set[char]
|
||||||
tkStrLit..tkTripleStrLit}
|
a: TAZset
|
||||||
|
s = {'0'..'9'}
|
||||||
var
|
testSets(s)
|
||||||
s: set[char]
|
doAssert 'F' in s
|
||||||
a: TAZset
|
a = {} #{'a'..'z'}
|
||||||
s = {'0'..'9'}
|
for x in low(TAZ) .. high(TAZ):
|
||||||
testSets(s)
|
incl(a, x)
|
||||||
if 'F' in s: write(stdout, "Ha ein F ist in s!\n")
|
doAssert x in a
|
||||||
else: write(stdout, "BUG: F ist nicht in s!\n")
|
|
||||||
a = {} #{'a'..'z'}
|
|
||||||
for x in low(TAZ) .. high(TAZ):
|
|
||||||
incl(a, x)
|
|
||||||
if x in a: discard
|
|
||||||
else: write(stdout, "BUG: something not in a!\n")
|
|
||||||
|
|
||||||
for x in low(TTokTypeRange) .. high(TTokTypeRange):
|
|
||||||
if x in tokTypes:
|
|
||||||
discard
|
|
||||||
#writeLine(stdout, "the token '$1' is in the set" % repr(x))
|
|
||||||
|
|
||||||
#OUT Ha ein F ist in s!
|
|
||||||
|
|
||||||
|
for x in low(FakeTokTypeRange) .. high(FakeTokTypeRange):
|
||||||
|
if x in tokTypes:
|
||||||
|
discard
|
||||||
|
|
||||||
type
|
type
|
||||||
TMsgKind* = enum
|
FakeMsgKind* = enum
|
||||||
errUnknown, errIllFormedAstX, errInternal, errCannotOpenFile, errGenerated,
|
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117, k118, k119, k120, k121, k122, k123, k124, k125, k126, k127, k128, k129, k130, k131, k132, k133, k134, k135, k136, k137, k138, k139, k140, k141, k142, k143, k144, k145, k146, k147, k148, k149, k150, k151, k152, k153, k154, k155, k156, k157, k158, k159, k160, k161, k162, k163, k164, k165, k166, k167, k168, k169, k170, k171, k172, k173, k174, k175, k176, k177, k178, k179, k180, k181, k182, k183, k184, k185, k186, k187, k188, k189, k190, k191, k192, k193, k194, k195, k196, k197, k198, k199, k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, k217, k218, k219, k220, k221, k222, k223, k224, k225, k226, k227, k228, k229, k230, k231, k232, k233, k234, k235, k236, k237, k238, k239, k240, k241, k242, k243, k244, k245, k246, k247, k248, k249, k250, k251, k252, k253, k254, k255, k256, k257, k258, k259, k260, k261, k262, k263, k264, k265, k266, k267, k268, k269, k270, k271, k272, k273, k274, k275,
|
||||||
errXCompilerDoesNotSupportCpp, errStringLiteralExpected,
|
|
||||||
errIntLiteralExpected, errInvalidCharacterConstant,
|
|
||||||
errClosingTripleQuoteExpected, errClosingQuoteExpected,
|
|
||||||
errTabulatorsAreNotAllowed, errInvalidToken, errLineTooLong,
|
|
||||||
errInvalidNumber, errNumberOutOfRange, errNnotAllowedInCharacter,
|
|
||||||
errClosingBracketExpected, errMissingFinalQuote, errIdentifierExpected,
|
|
||||||
errNewlineExpected,
|
|
||||||
errInvalidModuleName,
|
|
||||||
errOperatorExpected, errTokenExpected, errStringAfterIncludeExpected,
|
|
||||||
errRecursiveDependencyX, errOnOrOffExpected, errNoneSpeedOrSizeExpected,
|
|
||||||
errInvalidPragma, errUnknownPragma, errInvalidDirectiveX,
|
|
||||||
errAtPopWithoutPush, errEmptyAsm, errInvalidIndentation,
|
|
||||||
errExceptionExpected, errExceptionAlreadyHandled,
|
|
||||||
errYieldNotAllowedHere, errYieldNotAllowedInTryStmt,
|
|
||||||
errInvalidNumberOfYieldExpr, errCannotReturnExpr, errAttemptToRedefine,
|
|
||||||
errStmtInvalidAfterReturn, errStmtExpected, errInvalidLabel,
|
|
||||||
errInvalidCmdLineOption, errCmdLineArgExpected, errCmdLineNoArgExpected,
|
|
||||||
errInvalidVarSubstitution, errUnknownVar, errUnknownCcompiler,
|
|
||||||
errOnOrOffExpectedButXFound, errNoneBoehmRefcExpectedButXFound,
|
|
||||||
errNoneSpeedOrSizeExpectedButXFound, errGuiConsoleOrLibExpectedButXFound,
|
|
||||||
errUnknownOS, errUnknownCPU, errGenOutExpectedButXFound,
|
|
||||||
errArgsNeedRunOption, errInvalidMultipleAsgn, errColonOrEqualsExpected,
|
|
||||||
errExprExpected, errUndeclaredIdentifier, errUseQualifier, errTypeExpected,
|
|
||||||
errSystemNeeds, errExecutionOfProgramFailed, errNotOverloadable,
|
|
||||||
errInvalidArgForX, errStmtHasNoEffect, errXExpectsTypeOrValue,
|
|
||||||
errXExpectsArrayType, errIteratorCannotBeInstantiated, errExprXAmbiguous,
|
|
||||||
errConstantDivisionByZero, errOrdinalTypeExpected,
|
|
||||||
errOrdinalOrFloatTypeExpected, errOverOrUnderflow,
|
|
||||||
errCannotEvalXBecauseIncompletelyDefined, errChrExpectsRange0_255,
|
|
||||||
errDynlibRequiresExportc, errUndeclaredFieldX, errNilAccess,
|
|
||||||
errIndexOutOfBounds, errIndexTypesDoNotMatch, errBracketsInvalidForType,
|
|
||||||
errValueOutOfSetBounds, errFieldInitTwice, errFieldNotInit,
|
|
||||||
errExprXCannotBeCalled, errExprHasNoType, errExprXHasNoType,
|
|
||||||
errCastNotInSafeMode, errExprCannotBeCastedToX, errCommaOrParRiExpected,
|
|
||||||
errCurlyLeOrParLeExpected, errSectionExpected, errRangeExpected,
|
|
||||||
errMagicOnlyInSystem, errPowerOfTwoExpected,
|
|
||||||
errStringMayNotBeEmpty, errCallConvExpected, errProcOnlyOneCallConv,
|
|
||||||
errSymbolMustBeImported, errExprMustBeBool, errConstExprExpected,
|
|
||||||
errDuplicateCaseLabel, errRangeIsEmpty, errSelectorMustBeOfCertainTypes,
|
|
||||||
errSelectorMustBeOrdinal, errOrdXMustNotBeNegative, errLenXinvalid,
|
|
||||||
errWrongNumberOfVariables, errExprCannotBeRaised, errBreakOnlyInLoop,
|
|
||||||
errTypeXhasUnknownSize, errConstNeedsConstExpr, errConstNeedsValue,
|
|
||||||
errResultCannotBeOpenArray, errSizeTooBig, errSetTooBig,
|
|
||||||
errBaseTypeMustBeOrdinal, errInheritanceOnlyWithNonFinalObjects,
|
|
||||||
errInheritanceOnlyWithEnums, errIllegalRecursionInTypeX,
|
|
||||||
errCannotInstantiateX, errExprHasNoAddress, errXStackEscape,
|
|
||||||
errVarForOutParamNeeded,
|
|
||||||
errPureTypeMismatch, errTypeMismatch, errButExpected, errButExpectedX,
|
|
||||||
errAmbiguousCallXYZ, errWrongNumberOfArguments,
|
|
||||||
errXCannotBePassedToProcVar,
|
|
||||||
errXCannotBeInParamDecl, errPragmaOnlyInHeaderOfProc, errImplOfXNotAllowed,
|
|
||||||
errImplOfXexpected, errNoSymbolToBorrowFromFound, errDiscardValueX,
|
|
||||||
errInvalidDiscard, errIllegalConvFromXtoY, errCannotBindXTwice,
|
|
||||||
errInvalidOrderInArrayConstructor,
|
|
||||||
errInvalidOrderInEnumX, errEnumXHasHoles, errExceptExpected, errInvalidTry,
|
|
||||||
errOptionExpected, errXisNoLabel, errNotAllCasesCovered,
|
|
||||||
errUnknownSubstitionVar, errComplexStmtRequiresInd, errXisNotCallable,
|
|
||||||
errNoPragmasAllowedForX, errNoGenericParamsAllowedForX,
|
|
||||||
errInvalidParamKindX, errDefaultArgumentInvalid, errNamedParamHasToBeIdent,
|
|
||||||
errNoReturnTypeForX, errConvNeedsOneArg, errInvalidPragmaX,
|
|
||||||
errXNotAllowedHere, errInvalidControlFlowX,
|
|
||||||
errXisNoType, errCircumNeedsPointer, errInvalidExpression,
|
|
||||||
errInvalidExpressionX, errEnumHasNoValueX, errNamedExprExpected,
|
|
||||||
errNamedExprNotAllowed, errXExpectsOneTypeParam,
|
|
||||||
errArrayExpectsTwoTypeParams, errInvalidVisibilityX, errInitHereNotAllowed,
|
|
||||||
errXCannotBeAssignedTo, errIteratorNotAllowed, errXNeedsReturnType,
|
|
||||||
errNoReturnTypeDeclared,
|
|
||||||
errInvalidCommandX, errXOnlyAtModuleScope,
|
|
||||||
errXNeedsParamObjectType,
|
|
||||||
errTemplateInstantiationTooNested, errInstantiationFrom,
|
|
||||||
errInvalidIndexValueForTuple, errCommandExpectsFilename,
|
|
||||||
errMainModuleMustBeSpecified,
|
|
||||||
errXExpected,
|
|
||||||
errTIsNotAConcreteType,
|
|
||||||
errInvalidSectionStart, errGridTableNotImplemented, errGeneralParseError,
|
|
||||||
errNewSectionExpected, errWhitespaceExpected, errXisNoValidIndexFile,
|
|
||||||
errCannotRenderX, errVarVarTypeNotAllowed, errInstantiateXExplicitly,
|
|
||||||
errOnlyACallOpCanBeDelegator, errUsingNoSymbol,
|
|
||||||
errMacroBodyDependsOnGenericTypes,
|
|
||||||
errDestructorNotGenericEnough,
|
|
||||||
errInlineIteratorsAsProcParams,
|
|
||||||
errXExpectsTwoArguments,
|
|
||||||
errXExpectsObjectTypes, errXcanNeverBeOfThisSubtype, errTooManyIterations,
|
|
||||||
errCannotInterpretNodeX, errFieldXNotFound, errInvalidConversionFromTypeX,
|
|
||||||
errAssertionFailed, errCannotGenerateCodeForX, errXRequiresOneArgument,
|
|
||||||
errUnhandledExceptionX, errCyclicTree, errXisNoMacroOrTemplate,
|
|
||||||
errXhasSideEffects, errIteratorExpected, errLetNeedsInit,
|
|
||||||
errThreadvarCannotInit, errWrongSymbolX, errIllegalCaptureX,
|
|
||||||
errXCannotBeClosure, errXMustBeCompileTime,
|
|
||||||
errCannotInferTypeOfTheLiteral,
|
|
||||||
errCannotInferReturnType,
|
|
||||||
errGenericLambdaNotAllowed,
|
|
||||||
errCompilerDoesntSupportTarget,
|
|
||||||
errUser,
|
|
||||||
warnCannotOpenFile,
|
|
||||||
warnOctalEscape, warnXIsNeverRead, warnXmightNotBeenInit,
|
|
||||||
warnDeprecated, warnConfigDeprecated,
|
|
||||||
warnSmallLshouldNotBeUsed, warnUnknownMagic, warnRedefinitionOfLabel,
|
|
||||||
warnUnknownSubstitutionX, warnLanguageXNotSupported,
|
|
||||||
warnFieldXNotSupported, warnCommentXIgnored,
|
|
||||||
warnNilStatement, warnTypelessParam,
|
|
||||||
warnDifferentHeaps, warnWriteToForeignHeap, warnUnsafeCode,
|
|
||||||
warnEachIdentIsTuple,
|
|
||||||
warnProveInit, warnProveField, warnProveIndex, warnGcUnsafe, warnGcUnsafe2,
|
|
||||||
warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed,
|
|
||||||
warnUser,
|
|
||||||
hintSuccess, hintSuccessX,
|
|
||||||
hintLineTooLong, hintXDeclaredButNotUsed, hintConvToBaseNotNeeded,
|
|
||||||
hintConvFromXtoItselfNotNeeded, hintExprAlwaysX, hintQuitCalled,
|
|
||||||
hintProcessing, hintCodeBegin, hintCodeEnd, hintConf, hintPath,
|
|
||||||
hintConditionAlwaysTrue, hintName, hintPattern,
|
|
||||||
hintUser
|
|
||||||
|
|
||||||
const
|
doAssert pred(k260) == k259
|
||||||
fatalMin* = errUnknown
|
|
||||||
fatalMax* = errInternal
|
|
||||||
errMin* = errUnknown
|
|
||||||
errMax* = errUser
|
|
||||||
warnMin* = warnCannotOpenFile
|
|
||||||
warnMax* = pred(hintSuccess)
|
|
||||||
hintMin* = hintSuccess
|
|
||||||
hintMax* = high(TMsgKind)
|
|
||||||
|
|
||||||
type
|
type
|
||||||
TNoteKind* = range[warnMin..hintMax] # "notes" are warnings or hints
|
FakeMsgKind2 = range[k230..high(FakeMsgKind)]
|
||||||
TNoteKinds* = set[TNoteKind]
|
FakeMsgKind3 = set[FakeMsgKind2]
|
||||||
|
|
||||||
var
|
var gNotes: FakeMsgKind3 = {low(FakeMsgKind2)..high(FakeMsgKind2)} - {k233, k235}
|
||||||
gNotes*: TNoteKinds = {low(TNoteKind)..high(TNoteKind)} -
|
|
||||||
{warnUninit, warnProveField, warnProveIndex, warnGcUnsafe}
|
|
||||||
|
|
||||||
|
doAssert k233 notin gNotes
|
||||||
#import compiler.msgs
|
|
||||||
|
|
||||||
echo warnUninit in gNotes
|
|
||||||
|
|
||||||
# 7555
|
# 7555
|
||||||
doAssert {-1.int8, -2, -2}.card == 2
|
doAssert {-1.int8, -2, -2}.card == 2
|
||||||
|
|
@ -218,3 +68,24 @@ type Foo = enum
|
||||||
|
|
||||||
let x = { Foo1, Foo2 }
|
let x = { Foo1, Foo2 }
|
||||||
# bug #8425
|
# bug #8425
|
||||||
|
|
||||||
|
block:
|
||||||
|
# bug #2880
|
||||||
|
type
|
||||||
|
FakeMsgKind = enum
|
||||||
|
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k100
|
||||||
|
|
||||||
|
type
|
||||||
|
FakeMsgKind2 = range[k50..high(FakeMsgKind)]
|
||||||
|
FakeMsgKind2s = set[FakeMsgKind2]
|
||||||
|
|
||||||
|
const
|
||||||
|
a1: array[0..0, FakeMsgKind2s] = [{low(FakeMsgKind2)..high(FakeMsgKind2)} - {k99}]
|
||||||
|
a2 = a1[0]
|
||||||
|
|
||||||
|
var
|
||||||
|
s1: FakeMsgKind2s = a1[0]
|
||||||
|
s2: FakeMsgKind2s = a2
|
||||||
|
|
||||||
|
doAssert k99 notin s1
|
||||||
|
doAssert k99 notin s2
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue