Changeset 1158
- Timestamp:
- 05/08/08 17:50:07 (2 months ago)
- Files:
-
- trunk/descent.core/src/descent/core/compiler/IProblem.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/lookup/ModuleBuilder.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/ASTDmdNode.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/Argument.java (modified) (4 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/CtorDeclaration.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/DeleteDeclaration.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/DoStatement.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/EqualExp.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/ForStatement.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/ForeachStatement.java (modified) (5 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/Problem.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/ProblemMessages.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/ProblemMessages.properties (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/ReturnStatement.java (modified) (5 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/SwitchStatement.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TryFinallyStatement.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/Type.java (modified) (9 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeAArray.java (modified) (3 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeArray.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeBasic.java (modified) (4 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeClass.java (modified) (3 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeDArray.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeDelegate.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeEnum.java (modified) (5 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeFunction.java (modified) (6 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeIdentifier.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeInstance.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/TypePointer.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeQualified.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeReference.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeSArray.java (modified) (3 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeSlice.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeStruct.java (modified) (5 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeTuple.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeTypedef.java (modified) (5 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/TypeTypeof.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/UnrolledLoopStatement.java (modified) (2 diffs)
- trunk/descent.core/template/problem/problems.txt (modified) (3 diffs)
- trunk/update.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/descent.core/src/descent/core/compiler/IProblem.java
r1157 r1158 490 490 int OnlyOneOrTwoArgumentsForArrayForeach = 279; 491 491 int ForeachTargetIsNotAnArrayOf = 280; 492 int Foreach ValueCannotBeOutAndTypeBit = 281;493 int Foreach KeyCannotBeInout = 282;494 int ForeachValueOfUTFConversionCannotBeInout= 283;495 int CannotInferTypeF orSymbol= 284;496 int CannotInferTypeFromInitializer= 285;497 int NoStorageClassForSymbol= 286;498 int OnlyOneValueOrTwoKeyValueArgumentsForTupleForeach= 287;499 int CannotUniquelyInferForeachArgumentTypes= 288;500 int InvalidForeachAggregate= 289;501 int NotAnAssociativeArrayInitializer= 290;502 int ArrayInitializersAsExpressionsNotAllowed= 291;503 int IftypeConditionCannotBeAtGlobalScope= 292;504 int SymbolIsNotAFieldOfSymbol= 293;505 int RecursiveTemplateExpansion = 294;506 int RecursiveTemplateExpansionForTemplateArgument= 295;507 int IndexIsNotATypeOrExpression= 296;508 int CannotHavePointerToSymbol= 297;509 int SizeOfTypeIsNotKnown= 298;510 int CanOnlySliceTupleTypes= 299;511 int NoPropertyForTuple= 300;512 int Cannot ResolveDotProperty = 301;513 int CannotTakeAddressOfBitInArray= 302;514 int OnlyOneIndexAllowedToIndex= 303;515 int NoOpIndexOperatorOverloadForType= 304;516 int ArrayDimensionOverflow= 305;517 int OperatorAssignmentOverloadWithOpIndexIllegal= 306;518 int CannotHaveOutOrInoutArgumentOfBitInArray= 307;519 int SymbolIsAliasedToAFunction = 308;520 int LinkageDoesNotMatchInterfaceFunction= 309;521 int InterfaceFunctionIsNotImplemented= 310;522 int ExpectedKeyAsArgumentToRemove= 311;523 int CyclicConstructorCall= 312;524 int MissingOrCurruptObjectDotD= 313;525 int CannotContinueOutOfFinallyBlock= 314;526 int ForwardDeclaration= 315;527 int CannotFormDelegateDueToCovariantReturnType= 316;528 int ForeachRangeKeyCannotHaveStorageClass= 317;529 int MultipleOverridesOfSameFunction= 318;530 int IdentityAssignmentOperatorOverloadIsIllegal= 319;531 int LiteralsCannotBeClassMembers= 320;532 int No MatchForImplicitSuperCallInConstructor= 321;533 int NoReturnAtEndOfFunction= 322;534 int CanOnlyDeclareTypeAliasesWithinStaticIfConditionals= 323;535 int PackageAndModuleHaveTheSameName = 324;536 int StringLiteralsAreImmutable= 325;537 int ExpressionDotNewIsOnlyForAllocatingNestedClasses= 326;538 int TooManyArgumentsForArray= 327;539 int Return ExpressionExpected= 328;540 int ReturnWithoutCallingConstructor= 329;541 int ModuleIsInMultiple Packages= 330;542 int ModuleIsInMultipleDefined= 331;543 int NeedUpperAndLowerBoundToSlice Pointer= 332;544 int NeedUpperAndLowerBoundToSliceTuple= 333;545 int CannotConvertStringLiteralToVoidPointer= 334;546 int SymbolIsNotAPreInstanceInitializableField= 335;547 int NoCaseStatementFollowingGoto= 336;548 int S witchStatementHasNoDefault= 337;549 int SymbolIsNotAFunctionTemplate= 338;550 int TupleIsNotAValidTemplateValueArgument= 339;551 int IncompatibleArgumentsForTemplateInstantiation= 340;552 int ThrowStatementsCannotBeInContracts = 341;553 int CanOnlyThrowClassObjects= 342;554 int StringExpectedAsSecondArgument= 343;555 int WrongNumberOfArguments = 344;556 int StringMustBeChars= 345;557 int InvalidFirstArgument= 346;558 int FirstArgumentIsNotAClass = 347;559 int ArgumentHasNoMembers = 348;560 int SymbolHasNoMembers = 349;561 int KindSymbolHasNoMembers= 350;562 int DotOffsetDeprecated= 351;563 int NoClassInfoForComInterfaceObjects= 352;564 int Cannot MakeReferenceToABit= 353;565 int CannotFormTupleOfTuples= 354;566 int MissingInitializerInStaticConstructorForConstVariable= 355;567 int GlobalsStaticsFieldsRefAndAutoParametersCannotBeAuto= 356;568 int ReferenceToScopeClassMustBeScope= 357;569 int NumberOfKeysMustMatchNumberOfValues = 358;570 int ExpectedNumberArguments = 359;571 int ArraySliceIfOutOfBounds= 360;572 int InvalidUCS32Char= 361;573 int TupleIndexExceedsBounds= 362;574 int SliceIsOutOfRange= 363;575 int CannotTakeAddressOf= 364;576 int VariableIsUsedBeforeInitialization= 365;577 int EscapingReferenceTo Local = 366;578 int EscapingReferenceTo AutoLocal= 367;579 int EscapingReferenceTo LocalVariable= 368;580 int EscapingReferenceToVariadicParameter= 369;581 int CanOnlyCatchClassObjects= 370;582 int Base ClassIsForwardReferenced = 371;583 int BaseIsForwardReferenced= 372;584 int CannotInheritFromFinalClass = 373;585 int S taticClassCannotInheritFromNestedClass= 374;586 int SuperClassIsNestedWithin= 375;587 int ArrayComparisonTypeMismatch= 376;588 int C onditionalExpressionIsNotAModifiableLvalue= 377;589 int Cannot CastSymbolToSymbol= 378;590 int CannotDeleteInstanceOfComInterface= 379;591 int TemplateI sNotAMemberOf = 380;592 int TemplateIdentifierIsNotAMemberOf= 381;593 int CanOnlyInitiailizeConstMemberInsideConstructor = 382;594 int SymbolIsNotA Member= 383;595 int SymbolIsNotATemplate = 384;596 int DSymbolHasNoSize = 385;597 int ExpressionOfTypeDoesNotHaveABooleanValue= 386;598 int ImplicitConversionCanCauseLossOfData= 387;599 int F orwardReferenceToType= 388;600 int FloatingPointConstantExpressionExpected= 389;601 int ExpressionIsNotAValidTemplateValueArgument= 390;602 int InvalidRange LowerBound = 391;603 int InvalidRangeUpperBound= 392;604 int SymbolIsNotAScalarType = 393;605 int Foreach IndexMustBeType = 394;606 int ForeachValueMustBeType= 395;607 int OpApplyFunctionMustReturnAnInt = 396;608 int FunctionOfTypeOverridesButIsNotCovariant= 397;609 int CannotOverrideFinalFunction= 398;610 int IncompatibleCovariantTypes = 399;611 int CannotUseTemplateToAddVirtualFunctionToClass= 400;612 int OutResultIsAlreadyDefined = 401;613 int MissingInitializerForConstField = 402;614 int ImportNotFound= 403;615 int SymbolMustBeAnArrayOfPointerType= 404;616 int RvalueOfInExpressionMustBeAnAssociativeArray= 405;617 int InterfaceInheritsFromDuplicateInterface= 406;618 int LabelIsAlreadyDefined= 407;619 int CannotSubtractPointerFromSymbol= 408;620 int ThisForNestedClassMustBeAClassType= 409;621 int CanOnlyDereferenceAPointer= 410;622 int OuterClassThisNeededToNewNestedClass= 411;623 int ThisForNestedClassMustBeOfType= 412;624 int No ConstructorForSymbol = 413;625 int N oAllocatorForSymbol= 414;626 int Ne gativeArrayIndex= 415;627 int NewCanOnlyCreateStructsDynamicArraysAndClassObjects= 416;628 int MismatchedFunctionReturnTypeInference= 417;629 int S hiftLeftExceeds = 418;630 int S ymbolCannotBeSlicedWithBrackets= 419;631 int S liceExpressionIsNotAModifiableLvalue= 420;632 int SymbolIsNotAMemberOf= 421;633 int MoreInitiailizersThanFields= 422;634 int OverlappingInitiailization= 423;635 int CannotMakeExpressionOutOfInitializer= 424;636 int NoDefaultOrCaseInSwitchStatement= 425;637 int SymbolIsNotASymbol= 426;638 int ForwardReferenceToTemplate = 427;639 int ForwardReferenceToTemplateDeclaration= 428;640 int SpecializationNotAllowedForDeducedParameter= 429;641 int CannotDeclareTemplateAtFunctionScope = 430;642 int TemplateHasNoValue= 431;643 int CannotUseLocalAsTemplateParameter= 432;644 int NoSizeForType= 433;645 int SymbolDotSymbolIsNotADeclaration= 434;646 int ThisIsRequiredButIsNotABaseClassOf= 435;647 int ForwardReferenceToSymbol= 436;648 int IdentifierOfSymbolIsNotDefined = 437;649 int StructIsForwardReferenced= 438;650 int Cannot UseTemplateToAddFieldToAggregate = 439;651 int CannotModifyFinalVariable= 440;652 int InvalidUtf8Sequence2= 441;653 int Utf16 HighValuePastEndOfString= 442;654 int U tf16LowValueOutOfRange = 443;655 int UnpairedUtf16Value = 444;656 int IllegalUtf16Value = 445;657 int S taticConstructorCanOnlyBePartOfStructClassModule = 446;658 int ShiftAssignIsOutsideTheRange = 447;659 int TemplateTupleParameterMustBeLastOne= 448;660 int SymbolIsNestedInBoth= 449;661 int FunctionIsAbstract= 450;662 int KindSymbolDoesNotOverload= 451;663 int MismatchedTupleLengths = 452;664 int DoNotUseNullWhenComparingClassTypes= 453;665 int UseTokenInsteadOfTokenWhenComparingWithNull= 454;492 int ForeachKeyCannotBeInout = 281; 493 int ForeachValueOfUTFConversionCannotBeInout = 282; 494 int CannotInferTypeForSymbol = 283; 495 int CannotInferTypeFromInitializer = 284; 496 int NoStorageClassForSymbol = 285; 497 int OnlyOneValueOrTwoKeyValueArgumentsForTupleForeach = 286; 498 int CannotUniquelyInferForeachArgumentTypes = 287; 499 int InvalidForeachAggregate = 288; 500 int NotAnAssociativeArrayInitializer = 289; 501 int ArrayInitializersAsExpressionsNotAllowed = 290; 502 int IftypeConditionCannotBeAtGlobalScope = 291; 503 int SymbolIsNotAFieldOfSymbol = 292; 504 int RecursiveTemplateExpansion = 293; 505 int RecursiveTemplateExpansionForTemplateArgument = 294; 506 int IndexIsNotATypeOrExpression = 295; 507 int CannotHavePointerToSymbol = 296; 508 int SizeOfTypeIsNotKnown = 297; 509 int CanOnlySliceTupleTypes = 298; 510 int NoPropertyForTuple = 299; 511 int CannotResolveDotProperty = 300; 512 int CannotTakeAddressOfBitInArray = 301; 513 int OnlyOneIndexAllowedToIndex = 302; 514 int NoOpIndexOperatorOverloadForType = 303; 515 int ArrayDimensionOverflow = 304; 516 int OperatorAssignmentOverloadWithOpIndexIllegal = 305; 517 int CannotHaveOutOrInoutArgumentOfBitInArray = 306; 518 int SymbolIsAliasedToAFunction = 307; 519 int LinkageDoesNotMatchInterfaceFunction = 308; 520 int InterfaceFunctionIsNotImplemented = 309; 521 int ExpectedKeyAsArgumentToRemove = 310; 522 int CyclicConstructorCall = 311; 523 int MissingOrCurruptObjectDotD = 312; 524 int CannotContinueOutOfFinallyBlock = 313; 525 int ForwardDeclaration = 314; 526 int CannotFormDelegateDueToCovariantReturnType = 315; 527 int ForeachRangeKeyCannotHaveStorageClass = 316; 528 int MultipleOverridesOfSameFunction = 317; 529 int IdentityAssignmentOperatorOverloadIsIllegal = 318; 530 int LiteralsCannotBeClassMembers = 319; 531 int NoMatchForImplicitSuperCallInConstructor = 320; 532 int NoReturnAtEndOfFunction = 321; 533 int CanOnlyDeclareTypeAliasesWithinStaticIfConditionals = 322; 534 int PackageAndModuleHaveTheSameName = 323; 535 int StringLiteralsAreImmutable = 324; 536 int ExpressionDotNewIsOnlyForAllocatingNestedClasses = 325; 537 int TooManyArgumentsForArray = 326; 538 int ReturnExpressionExpected = 327; 539 int ReturnWithoutCallingConstructor = 328; 540 int ModuleIsInMultiplePackages = 329; 541 int ModuleIsInMultipleDefined = 330; 542 int NeedUpperAndLowerBoundToSlicePointer = 331; 543 int NeedUpperAndLowerBoundToSliceTuple = 332; 544 int CannotConvertStringLiteralToVoidPointer = 333; 545 int SymbolIsNotAPreInstanceInitializableField = 334; 546 int NoCaseStatementFollowingGoto = 335; 547 int SwitchStatementHasNoDefault = 336; 548 int SymbolIsNotAFunctionTemplate = 337; 549 int TupleIsNotAValidTemplateValueArgument = 338; 550 int IncompatibleArgumentsForTemplateInstantiation = 339; 551 int ThrowStatementsCannotBeInContracts = 340; 552 int CanOnlyThrowClassObjects = 341; 553 int StringExpectedAsSecondArgument = 342; 554 int WrongNumberOfArguments = 343; 555 int StringMustBeChars = 344; 556 int InvalidFirstArgument = 345; 557 int FirstArgumentIsNotAClass = 346; 558 int ArgumentHasNoMembers = 347; 559 int SymbolHasNoMembers = 348; 560 int KindSymbolHasNoMembers = 349; 561 int DotOffsetDeprecated = 350; 562 int NoClassInfoForComInterfaceObjects = 351; 563 int CannotMakeReferenceToABit = 352; 564 int CannotFormTupleOfTuples = 353; 565 int MissingInitializerInStaticConstructorForConstVariable = 354; 566 int GlobalsStaticsFieldsRefAndAutoParametersCannotBeAuto = 355; 567 int ReferenceToScopeClassMustBeScope = 356; 568 int NumberOfKeysMustMatchNumberOfValues = 357; 569 int ExpectedNumberArguments = 358; 570 int ArraySliceIfOutOfBounds = 359; 571 int InvalidUCS32Char = 360; 572 int TupleIndexExceedsBounds = 361; 573 int SliceIsOutOfRange = 362; 574 int CannotTakeAddressOf = 363; 575 int VariableIsUsedBeforeInitialization = 364; 576 int EscapingReferenceToLocal = 365; 577 int EscapingReferenceToAutoLocal = 366; 578 int EscapingReferenceToLocalVariable = 367; 579 int EscapingReferenceToVariadicParameter = 368; 580 int CanOnlyCatchClassObjects = 369; 581 int BaseClassIsForwardReferenced = 370; 582 int BaseIsForwardReferenced = 371; 583 int CannotInheritFromFinalClass = 372; 584 int StaticClassCannotInheritFromNestedClass = 373; 585 int SuperClassIsNestedWithin = 374; 586 int ArrayComparisonTypeMismatch = 375; 587 int ConditionalExpressionIsNotAModifiableLvalue = 376; 588 int CannotCastSymbolToSymbol = 377; 589 int CannotDeleteInstanceOfComInterface = 378; 590 int TemplateIsNotAMemberOf = 379; 591 int TemplateIdentifierIsNotAMemberOf = 380; 592 int CanOnlyInitiailizeConstMemberInsideConstructor = 381; 593 int SymbolIsNotAMember = 382; 594 int SymbolIsNotATemplate = 383; 595 int DSymbolHasNoSize = 384; 596 int ExpressionOfTypeDoesNotHaveABooleanValue = 385; 597 int ImplicitConversionCanCauseLossOfData = 386; 598 int ForwardReferenceToType = 387; 599 int FloatingPointConstantExpressionExpected = 388; 600 int ExpressionIsNotAValidTemplateValueArgument = 389; 601 int InvalidRangeLowerBound = 390; 602 int InvalidRangeUpperBound = 391; 603 int SymbolIsNotAScalarType = 392; 604 int ForeachIndexMustBeType = 393; 605 int ForeachValueMustBeType = 394; 606 int OpApplyFunctionMustReturnAnInt = 395; 607 int FunctionOfTypeOverridesButIsNotCovariant = 396; 608 int CannotOverrideFinalFunction = 397; 609 int IncompatibleCovariantTypes = 398; 610 int CannotUseTemplateToAddVirtualFunctionToClass = 399; 611 int OutResultIsAlreadyDefined = 400; 612 int MissingInitializerForConstField = 401; 613 int ImportNotFound = 402; 614 int SymbolMustBeAnArrayOfPointerType = 403; 615 int RvalueOfInExpressionMustBeAnAssociativeArray = 404; 616 int InterfaceInheritsFromDuplicateInterface = 405; 617 int LabelIsAlreadyDefined = 406; 618 int CannotSubtractPointerFromSymbol = 407; 619 int ThisForNestedClassMustBeAClassType = 408; 620 int CanOnlyDereferenceAPointer = 409; 621 int OuterClassThisNeededToNewNestedClass = 410; 622 int ThisForNestedClassMustBeOfType = 411; 623 int NoConstructorForSymbol = 412; 624 int NoAllocatorForSymbol = 413; 625 int NegativeArrayIndex = 414; 626 int NewCanOnlyCreateStructsDynamicArraysAndClassObjects = 415; 627 int MismatchedFunctionReturnTypeInference = 416; 628 int ShiftLeftExceeds = 417; 629 int SymbolCannotBeSlicedWithBrackets = 418; 630 int SliceExpressionIsNotAModifiableLvalue = 419; 631 int SymbolIsNotAMemberOf = 420; 632 int MoreInitiailizersThanFields = 421; 633 int OverlappingInitiailization = 422; 634 int CannotMakeExpressionOutOfInitializer = 423; 635 int NoDefaultOrCaseInSwitchStatement = 424; 636 int SymbolIsNotASymbol = 425; 637 int ForwardReferenceToTemplate = 426; 638 int ForwardReferenceToTemplateDeclaration = 427; 639 int SpecializationNotAllowedForDeducedParameter = 428; 640 int CannotDeclareTemplateAtFunctionScope = 429; 641 int TemplateHasNoValue = 430; 642 int CannotUseLocalAsTemplateParameter = 431; 643 int NoSizeForType = 432; 644 int SymbolDotSymbolIsNotADeclaration = 433; 645 int ThisIsRequiredButIsNotABaseClassOf = 434; 646 int ForwardReferenceToSymbol = 435; 647 int IdentifierOfSymbolIsNotDefined = 436; 648 int StructIsForwardReferenced = 437; 649 int CannotUseTemplateToAddFieldToAggregate = 438; 650 int CannotModifyFinalVariable = 439; 651 int InvalidUtf8Sequence2 = 440; 652 int Utf16HighValuePastEndOfString = 441; 653 int Utf16LowValueOutOfRange = 442; 654 int UnpairedUtf16Value = 443; 655 int IllegalUtf16Value = 444; 656 int StaticConstructorCanOnlyBePartOfStructClassModule = 445; 657 int ShiftAssignIsOutsideTheRange = 446; 658 int TemplateTupleParameterMustBeLastOne = 447; 659 int SymbolIsNestedInBoth = 448; 660 int FunctionIsAbstract = 449; 661 int KindSymbolDoesNotOverload = 450; 662 int MismatchedTupleLengths = 451; 663 int DoNotUseNullWhenComparingClassTypes = 452; 664 int UseTokenInsteadOfTokenWhenComparingWithNull = 453; 665 int VoidDoesNotHaveAnInitializer = 454; 666 666 667 667 } trunk/descent.core/src/descent/internal/compiler/lookup/ModuleBuilder.java
r1155 r1158 135 135 * Currently doesn't work. 136 136 */ 137 public boolean LAZY_VARS = LAZY & true;137 public boolean LAZY_VARS = LAZY & false; 138 138 139 139 /* trunk/descent.core/src/descent/internal/compiler/parser/ASTDmdNode.java
r1157 r1158 1101 1101 } 1102 1102 1103 public static void argsToCBuffer(OutBuffer buf, HdrGenState hgs,1104 List<Argument> arguments, int varargs, SemanticContext context) {1105 buf.writeByte('(');1106 if (arguments != null) {1107 int i;1108 OutBuffer argbuf = new OutBuffer();1109 1110 for (i = 0; i < arguments.size(); i++) {1111 Argument arg;1112 1113 if (i != 0) {1114 buf.writestring(", ");1115 }1116 arg = arguments.get(i);1117 if ((arg.storageClass & STCout) != 0) {1118 buf.writestring("out ");1119 } else if ((arg.storageClass & STCref) != 0) {1120 buf1121 .writestring((context.global.params.Dversion == 1) ? "inout "1122 : "ref ");1123 } else if ((arg.storageClass & STClazy) != 0) {1124 buf.writestring("lazy ");1125 }1126 argbuf.reset();1127 arg.type.toCBuffer2(argbuf, arg.ident, hgs, context);1128 if (arg.defaultArg != null) {1129 argbuf.writestring(" = ");1130 arg.defaultArg.toCBuffer(argbuf, hgs, context);1131 }1132 buf.write(argbuf);1133 }1134 if (varargs != 0) {1135 if (i != 0 && varargs == 1) {1136 buf.writeByte(',');1137 }1138 buf.writestring("...");1139 }1140 }1141 buf.writeByte(')');1142 }1143 1144 1103 public static void arrayExpressionScanForNestedRef(Scope sc, Expressions a, 1145 1104 SemanticContext context) { trunk/descent.core/src/descent/internal/compiler/parser/Argument.java
r1037 r1158 14 14 15 15 // DMD 1.020 16 public class Argument extends ASTDmdNode {16 public class Argument extends ASTDmdNode implements Cloneable { 17 17 18 18 public static void argsToCBuffer(OutBuffer buf, HdrGenState hgs, … … 40 40 } 41 41 argbuf.reset(); 42 arg.type.toCBuffer 2(argbuf, arg.ident, hgs, context);42 arg.type.toCBuffer(argbuf, arg.ident, hgs, context); 43 43 if (arg.defaultArg != null) { 44 44 argbuf.writestring(" = "); … … 89 89 arg = args.get(i); 90 90 argbuf.reset(); 91 arg.type.toCBuffer2(argbuf, null, hgs, context);91 arg.type.toCBuffer2(argbuf, hgs, 0, context); 92 92 buf.write(argbuf); 93 93 } … … 258 258 type.toDecoBuffer(buf, context); 259 259 } 260 261 public Argument copy() { 262 try { 263 return (Argument) clone(); 264 } catch (CloneNotSupportedException e) { 265 throw new RuntimeException(e); 266 } 267 } 260 268 261 269 public String getSignature() { trunk/descent.core/src/descent/internal/compiler/parser/CtorDeclaration.java
r1154 r1158 142 142 SemanticContext context) { 143 143 buf.writestring("this"); 144 argsToCBuffer(buf, hgs, arguments, varargs, context);144 Argument.argsToCBuffer(buf, hgs, arguments, varargs, context); 145 145 bodyToCBuffer(buf, hgs, context); 146 146 } trunk/descent.core/src/descent/internal/compiler/parser/DeleteDeclaration.java
r1154 r1158 124 124 SemanticContext context) { 125 125 buf.writestring("delete"); 126 argsToCBuffer(buf, hgs, arguments, 0, context);126 Argument.argsToCBuffer(buf, hgs, arguments, 0, context); 127 127 bodyToCBuffer(buf, hgs, context); 128 128 } trunk/descent.core/src/descent/internal/compiler/parser/DoStatement.java
r1118 r1158 130 130 condition = condition.semantic(sc, context); 131 131 condition = resolveProperties(sc, condition, context); 132 condition = condition.optimize(WANTvalue, context); 132 133 133 134 condition = condition.checkToBoolean(context); trunk/descent.core/src/descent/internal/compiler/parser/EqualExp.java
r1157 r1158 105 105 (e1.type.toBasetype(context).ty == Tclass && e2.op == TOKnull || 106 106 e2.type.toBasetype(context).ty == Tclass && e1.op == TOKnull)) { 107 context.acceptProblem(Problem.newSemanticTypeError(IProblem.UseTokenInsteadOfTokenWhenComparingWithNull, this, new String[] { op == TOKequal ? TOKidentity.toString() : TOKnotidentity.toString(), op.toString() }));107 context.acceptProblem(Problem.newSemanticTypeError(IProblem.UseTokenInsteadOfTokenWhenComparingWithNull, this, new String[] { op == TOKequal ? "is" : "!is", op.toString() })); 108 108 } 109 109 trunk/descent.core/src/descent/internal/compiler/parser/ForStatement.java
r1118 r1158 166 166 condition = condition.semantic(sc, context); 167 167 condition = resolveProperties(sc, condition, context); 168 condition = condition.optimize(WANTvalue, context); 169 168 170 condition = condition.checkToBoolean(context); 169 171 if (increment != null) { trunk/descent.core/src/descent/internal/compiler/parser/ForeachStatement.java
r1154 r1158 29 29 import static descent.internal.compiler.parser.TY.Taarray; 30 30 import static descent.internal.compiler.parser.TY.Tarray; 31 import static descent.internal.compiler.parser.TY.Tbit;32 31 import static descent.internal.compiler.parser.TY.Tchar; 33 32 import static descent.internal.compiler.parser.TY.Tdchar; … … 396 395 * array. 397 396 */ 398 tn = tab.next .toBasetype(context);397 tn = tab.nextOf().toBasetype(context); 399 398 if (tn.ty == Tchar || tn.ty == Twchar || tn.ty == Tdchar) { 400 399 Argument arg; … … 464 463 context.acceptProblem(Problem.newSemanticTypeError(IProblem.ForeachTargetIsNotAnArrayOf, sourceAggr, new String[] { tab.toChars(context), value.type.toChars(context) })); 465 464 } 466 }467 }468 469 if ((value.storage_class & STCout) != 0470 && value.type.toBasetype(context).ty == Tbit) {471 if (context.acceptsProblems()) {472 context.acceptProblem(Problem.newSemanticTypeError(IProblem.ForeachValueCannotBeOutAndTypeBit, this));473 465 } 474 466 } … … 544 536 Type tret; 545 537 546 tret = func.type.next ;538 tret = func.type.nextOf(); 547 539 548 540 // Need a variable to hold value from any return statements in body. … … 623 615 } 624 616 } 625 if (!arg.type.equals(taa. index)) {617 if (!arg.type.equals(taa.nextOf())) { 626 618 if (context.acceptsProblems()) { 627 619 context.acceptProblem(Problem.newSemanticTypeError( trunk/descent.core/src/descent/internal/compiler/parser/Problem.java
r1157 r1158 688 688 case ForeachTargetIsNotAnArrayOf: 689 689 return String.format(ProblemMessages.ForeachTargetIsNotAnArrayOf, arguments[0], arguments[1]); 690 case ForeachValueCannotBeOutAndTypeBit:691 return String.format(ProblemMessages.ForeachValueCannotBeOutAndTypeBit);692 690 case ForeachKeyCannotBeInout: 693 691 return String.format(ProblemMessages.ForeachKeyCannotBeInout); … … 1036 1034 case UseTokenInsteadOfTokenWhenComparingWithNull: 1037 1035 return String.format(ProblemMessages.UseTokenInsteadOfTokenWhenComparingWithNull, arguments[0], arguments[1]); 1036 case VoidDoesNotHaveAnInitializer: 1037 return String.format(ProblemMessages.VoidDoesNotHaveAnInitializer); 1038 1038 default: 1039 1039 return ""; trunk/descent.core/src/descent/internal/compiler/parser/ProblemMessages.java
r1157 r1158 291 291 public static String OnlyOneOrTwoArgumentsForArrayForeach; 292 292 public static String ForeachTargetIsNotAnArrayOf; 293 public static String ForeachValueCannotBeOutAndTypeBit;294 293 public static String ForeachKeyCannotBeInout; 295 294 public static String ForeachValueOfUTFConversionCannotBeInout; … … 465 464 public static String DoNotUseNullWhenComparingClassTypes; 466 465 public static String UseTokenInsteadOfTokenWhenComparingWithNull; 466 public static String VoidDoesNotHaveAnInitializer; 467 467 468 468 static { trunk/descent.core/src/descent/internal/compiler/parser/ProblemMessages.properties
r1157 r1158 279 279 OnlyOneOrTwoArgumentsForArrayForeach=Only one or two arguments for array foreach 280 280 ForeachTargetIsNotAnArrayOf=foreach: %1$s is not an array of %2$s 281 ForeachValueCannotBeOutAndTypeBit=foreach: value cannot be out and type bit282 281 ForeachKeyCannotBeInout=foreach: key cannot be inout 283 282 ForeachValueOfUTFConversionCannotBeInout=foreach: value of UTF conversion cannot be inout … … 453 452 DoNotUseNullWhenComparingClassTypes=Do not use null when comparing class types 454 453 UseTokenInsteadOfTokenWhenComparingWithNull=Use '%1$s' instead of '%2$s' when comparing with null 454 VoidDoesNotHaveAnInitializer=void does not have an initializer trunk/descent.core/src/descent/internal/compiler/parser/ReturnStatement.java
r1154 r1158 97 97 } 98 98 99 Type tret = fd.type.next ;99 Type tret = fd.type.nextOf(); 100 100 if (fd.tintro != null) { 101 tret = fd.tintro.next ;101 tret = fd.tintro.nextOf(); 102 102 } 103 103 Type tbret = null; … … 169 169 if (fd.returnLabel != null && tbret.ty != Tvoid) { 170 170 } else if (fd.inferRetType) { 171 if (fd.type.next != null) {172 if (!exp.type.equals(fd.type.next )) {171 if (fd.type.nextOf() != null) { 172 if (!exp.type.equals(fd.type.nextOf())) { 173 173 if (context.acceptsProblems()) { 174 174 context.acceptProblem(Problem.newSemanticTypeError( 175 IProblem.MismatchedFunctionReturnTypeInference, sourceExp, new String[] { exp.type.toChars(context), fd.type.next .toChars(context) }));175 IProblem.MismatchedFunctionReturnTypeInference, sourceExp, new String[] { exp.type.toChars(context), fd.type.nextOf().toChars(context) })); 176 176 } 177 177 } … … 180 180 fd.type = fd.type.semantic(loc, sc, context); 181 181 if (fd.tintro == null) { 182 tret = fd.type.next ;182 tret = fd.type.nextOf(); 183 183 tbret = tret.toBasetype(context); 184 184 } … … 188 188 } 189 189 } else if (fd.inferRetType) { 190 if (fd.type.next != null) {191 if (fd.type.next .ty != Tvoid) {190 if (fd.type.nextOf() != null) { 191 if (fd.type.nextOf().ty != Tvoid) { 192 192 if (context.acceptsProblems()) { 193 193 context.acceptProblem(Problem.newSemanticTypeError( 194 IProblem.MismatchedFunctionReturnTypeInference, this, new String[] { "void", fd.type.next .toChars(context) }));194 IProblem.MismatchedFunctionReturnTypeInference, this, new String[] { "void", fd.type.nextOf().toChars(context) })); 195 195 } 196 196 } … … 226 226 s = new ReturnStatement(loc, new IntegerExp(loc, sc.fes.cases 227 227 .size() + 1)); 228 } else if (fd.type.next .toBasetype(context) == Type.tvoid) {228 } else if (fd.type.nextOf().toBasetype(context) == Type.tvoid) { 229 229 Statement s1; 230 230 Statement s2; trunk/descent.core/src/descent/internal/compiler/parser/SwitchStatement.java
r1154 r1158 131 131 // If it's not an array, cast it to one 132 132 if (condition.type.ty != Tarray) { 133 condition = condition.implicitCastTo(sc, condition.type.next 133 condition = condition.implicitCastTo(sc, condition.type.nextOf() 134 134 .arrayOf(context), context); 135 135 } … … 138 138 condition.checkIntegral(context); 139 139 } 140 condition = condition.optimize(WANTvalue, context); 140 141 141 142 sc = sc.push(); trunk/descent.core/src/descent/internal/compiler/parser/TryFinallyStatement.java
r1118 r1158 36 36 public boolean fallOffEnd(SemanticContext context) { 37 37 boolean result; 38 result = body .fallOffEnd(context);38 result = body != null ? body.fallOffEnd(context) : true; 39 39 return result; 40 40 } trunk/descent.core/src/descent/internal/compiler/parser/Type.java
r1157 r1158 674 674 } 675 675 676 public Expression defaultInit(SemanticContext context) { 676 public final Expression defaultInit(SemanticContext context) { 677 return defaultInit(Loc.ZERO, context); 678 } 679 680 public Expression defaultInit(Loc loc, SemanticContext context) { 677 681 return null; 678 682 } … … 708 712 e = getTypeInfo(null, context); 709 713 } else if (equals(ident, Id.init)) { 710 e = defaultInit(context); 714 if (ty == Tvoid) { 715 if (context.acceptsProblems()) { 716 context.acceptProblem(Problem.newSemanticTypeError(IProblem.VoidDoesNotHaveAnInitializer, lineNumber, start, length)); 717 } 718 } 719 e = defaultInit(loc, context); 711 720 } else if (equals(ident, Id.mangleof)) { 712 721 Assert.isNotNull(deco); … … 780 789 } 781 790 } else if (equals(ident, Id.init)) { 782 return defaultInit(context); 791 Expression ex = defaultInit(e.loc, context); 792 return ex; 783 793 } 784 794 } … … 988 998 OutBuffer buf = new OutBuffer(); 989 999 HdrGenState hgs = new HdrGenState(); 990 toCBuffer 2(buf, null, hgs, context);1000 toCBuffer(buf, null, hgs, context); 991 1001 return buf.toChars(); 992 1002 } … … 994 1004 public void toCBuffer(OutBuffer buf, IdentifierExp ident, HdrGenState hgs, 995 1005 SemanticContext context) { 996 OutBuffer tbuf = new OutBuffer(); 997 toCBuffer2(tbuf, ident, hgs, context); 998 buf.write(tbuf); 999 } 1000 1001 public boolean hasPointers(SemanticContext context) { 1002 return false; 1003 } 1004 1005 public char[] getTypeInfoIdent(int internal) { 1006 // TODO semantic 1007 return null; 1008 } 1009 1010 public void toCBuffer2(OutBuffer buf, IdentifierExp ident, HdrGenState hgs, 1011 SemanticContext context) { 1012 buf.prependstring(toChars(context)); 1006 toCBuffer2(buf, hgs, 0, context); 1013 1007 if (ident != null) { 1014 1008 buf.writeByte(' '); 1015 buf.writestring(ident.ident); 1016 } 1017 } 1018 1019 public void toCBuffer2(OutBuffer buf, HdrGenState hgs, int mod, 1020 SemanticContext context) { 1009 buf.writestring(ident.toChars()); 1010 } 1011 } 1012
