Changes in / [273ff10:def9d4e]
- Files:
-
- 1 added
- 2 deleted
- 16 edited
-
doc/theses/aaron_moss_PhD/phd/background.tex (modified) (1 diff)
-
doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex (modified) (1 diff)
-
doc/working/exception/impl/Makefile (deleted)
-
doc/working/exception/impl/exception.c (modified) (4 diffs)
-
doc/working/exception/impl/nopic.s (added)
-
doc/working/exception/impl/pdc.s (deleted)
-
doc/working/exception/impl/pic.s (modified) (10 diffs)
-
libcfa/src/concurrency/coroutine.cfa (modified) (1 diff)
-
src/Concurrency/Keywords.cc (modified) (2 diffs)
-
src/Concurrency/Waitfor.cc (modified) (4 diffs)
-
src/Parser/TypeData.cc (modified) (6 diffs)
-
src/SynTree/Expression.cc (modified) (1 diff)
-
src/SynTree/ReferenceToType.cc (modified) (1 diff)
-
src/SynTree/Type.cc (modified) (1 diff)
-
tests/.expect/alloc-ERROR.txt (modified) (3 diffs)
-
tests/.expect/completeTypeError.txt (modified) (4 diffs)
-
tests/.expect/declarationErrors.txt (modified) (2 diffs)
-
tests/.expect/nested-types-ERR2.txt (modified) (1 diff)
-
tests/concurrent/examples/datingService.cfa (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/aaron_moss_PhD/phd/background.tex
r273ff10 rdef9d4e 213 213 The ability of types to begin or cease to satisfy traits when declarations go into or out of scope makes caching of trait satisfaction judgements difficult, and the ability of traits to take multiple type parameters can lead to a combinatorial explosion of work in any attempt to pre-compute trait satisfaction relationships. 214 214 215 \subsection{Implicit Conversions} \label{implicit-conv-sec}215 \subsection{Implicit Conversions} 216 216 217 217 In addition to the multiple interpretations of an expression produced by name overloading and polymorphic functions, for backward compatibility \CFA{} must support all of the implicit conversions present in C, producing further candidate interpretations for expressions. -
doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex
r273ff10 rdef9d4e 2 2 \label{resolution-chap} 3 3 4 The main task of the \CFACC{} type-checker is \emph{expression resolution}, determining which declarations the identifiers in each expression correspond to. 5 Resolution is a straightforward task in C, as each declaration has a unique identifier, but in \CFA{} the name overloading features discussed in Section~\ref{overloading-sec} generate multiple candidate declarations for each identifier. 6 I refer to a given matching between identifiers and declarations in an expression as an \emph{interpretation}; an interpretation also includes information about polymorphic type bindings and implicit casts to support the \CFA{} features discussed in Sections~\ref{poly-func-sec} and~\ref{implicit-conv-sec}, each of which increase the proportion of feasible candidate interpretations. 7 To choose between feasible interpretations, \CFA{} defines a \emph{conversion cost} to rank interpretations; the expression resolution problem is thus to find the unique minimal-cost interpretation for an expression, reporting an error if no such interpretation exists. 8 9 \section{Conversion Cost} 10 11 4 Talk about the resolution heuristics. This is the bulk of the thesis. 12 5 13 6 % Discuss changes to cost model, as promised in Ch. 2 14 15 % Mention relevance of work to C++20 concepts -
doc/working/exception/impl/exception.c
r273ff10 rdef9d4e 243 243 244 244 // Get a function pointer from the relative offset and call it 245 // _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher; 245 // _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher; 246 246 247 247 _Unwind_Reason_Code (*matcher)() = … … 320 320 // on how the assembly works. 321 321 // Setup the personality routine 322 #if defined(__PIC__)323 asm volatile (".cfi_personality 0x9b,CFA.ref.__gcfa_personality_v0");324 // Setup the exception table325 asm volatile (".cfi_lsda 0x1b, .LLSDACFA2");326 #else327 322 asm volatile (".cfi_personality 0x3,__gcfa_personality_v0"); 328 323 // Setup the exception table 329 324 asm volatile (".cfi_lsda 0x3, .LLSDACFA2"); 330 #endif331 325 332 326 // Label which defines the start of the area for which the handler is setup … … 362 356 // Some more works need to be done if we want to have a single 363 357 // call to the try routine 364 #if defined(__PIC__)365 asm (366 //HEADER367 ".LFECFA1:\n"368 " .globl __gcfa_personality_v0\n"369 " .section .gcc_except_table,\"a\",@progbits\n"370 ".LLSDACFA2:\n" //TABLE header371 " .byte 0xff\n"372 " .byte 0xff\n"373 " .byte 0x1\n"374 " .uleb128 .LLSDACSECFA2-.LLSDACSBCFA2\n" // BODY length375 // Body uses language specific data and therefore could be modified arbitrarily376 ".LLSDACSBCFA2:\n" // BODY start377 " .uleb128 .TRYSTART-__try_terminate\n" // Handled area start (relative to start of function)378 " .uleb128 .TRYEND-.TRYSTART\n" // Handled area length379 " .uleb128 .CATCH-__try_terminate\n" // Handler landing pad adress (relative to start of function)380 " .uleb128 1\n" // Action code, gcc seems to use always 0381 ".LLSDACSECFA2:\n" // BODY end382 " .text\n" // TABLE footer383 " .size __try_terminate, .-__try_terminate\n"384 );385 386 // Somehow this piece of helps with the resolution of debug symbols.387 __attribute__((unused)) static const int dummy = 0;388 asm (389 " .hidden CFA.ref.__gcfa_personality_v0\n" // Declare an new hidden symbol390 " .weak CFA.ref.__gcfa_personality_v0\n"391 " .section .data.rel.local.CFA.ref.__gcfa_personality_v0,\"awG\",@progbits,CFA.ref.__gcfa_personality_v0,comdat\n" // No clue what this does specifically392 " .align 8\n"393 " .type CFA.ref.__gcfa_personality_v0, @object\n" // Type of our hidden symbol (it's not actually the function itself)394 " .size CFA.ref.__gcfa_personality_v0, 8\n" // Size of our hidden symbol395 "CFA.ref.__gcfa_personality_v0:\n"396 " .quad __gcfa_personality_v0\n"397 );398 #else399 358 asm ( 400 359 //HEADER … … 416 375 " .text\n" // TABLE footer 417 376 " .size __try_terminate, .-__try_terminate\n" 377 " .ident \"GCC: (Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901\"\n" 378 // " .section .note.GNU-stack,\"x\",@progbits\n" 418 379 ); 419 #endif -
doc/working/exception/impl/pic.s
r273ff10 rdef9d4e 1 1 .file "test.c" 2 2 .text 3 .Ltext0:4 3 .globl clean 5 4 .type clean, @function 6 5 clean: 7 6 .LFB0: 8 .file 1 "test.c"9 .loc 1 1 010 7 .cfi_startproc 11 8 pushq %rbp … … 15 12 .cfi_def_cfa_register 6 16 13 movq %rdi, -8(%rbp) 17 .loc 1 1 018 14 nop 19 15 popq %rbp … … 27 23 foo: 28 24 .LFB1: 29 .loc 1 4 030 25 .cfi_startproc 31 26 .cfi_personality 0x9b,DW.ref.__gcc_personality_v0 … … 44 39 .cfi_offset 3, -40 45 40 movl %edi, -52(%rbp) 46 .loc 1 4 047 41 movq %fs:40, %rax 48 42 movq %rax, -40(%rbp) 49 43 xorl %eax, %eax 50 .loc 1 6 051 44 movl -52(%rbp), %eax 52 45 movl %eax, %edi … … 57 50 movl $0, %r12d 58 51 .L7: 59 .loc 1 5 060 52 leaq -44(%rbp), %rax 61 53 movq %rax, %rdi … … 64 56 cmpl $1, %r12d 65 57 je .L4 66 .loc 1 6 067 58 movl %r13d, %eax 68 .loc 1 7 069 59 movq -40(%rbp), %rdx 70 60 xorq %fs:40, %rdx … … 74 64 movq %rax, %rbx 75 65 movl $1, %r12d 76 .loc 1 5 077 66 jmp .L7 78 67 .L4: … … 82 71 .LEHE1: 83 72 .L10: 84 .loc 1 7 085 73 call __stack_chk_fail@PLT 86 74 .L8: … … 113 101 .text 114 102 .size foo, .-foo 115 .Letext0:116 .section .debug_info,"",@progbits117 .Ldebug_info0:118 .long 0x9c119 .value 0x4120 .long .Ldebug_abbrev0121 .byte 0x8122 .uleb128 0x1123 .long .LASF0124 .byte 0xc125 .long .LASF1126 .long .LASF2127 .quad .Ltext0128 .quad .Letext0-.Ltext0129 .long .Ldebug_line0130 .uleb128 0x2131 .string "foo"132 .byte 0x1133 .byte 0x4134 .long 0x68135 .quad .LFB1136 .quad .LFE1-.LFB1137 .uleb128 0x1138 .byte 0x9c139 .long 0x68140 .uleb128 0x3141 .string "x"142 .byte 0x1143 .byte 0x4144 .long 0x68145 .uleb128 0x3146 .byte 0x91147 .sleb128 -68148 .uleb128 0x4149 .string "i"150 .byte 0x1151 .byte 0x5152 .long 0x68153 .uleb128 0x2154 .byte 0x91155 .sleb128 -60156 .byte 0157 .uleb128 0x5158 .byte 0x4159 .byte 0x5160 .string "int"161 .uleb128 0x6162 .long .LASF3163 .byte 0x1164 .byte 0x1165 .quad .LFB0166 .quad .LFE0-.LFB0167 .uleb128 0x1168 .byte 0x9c169 .long 0x99170 .uleb128 0x3171 .string "p"172 .byte 0x1173 .byte 0x1174 .long 0x99175 .uleb128 0x2176 .byte 0x91177 .sleb128 -24178 .byte 0179 .uleb128 0x7180 .byte 0x8181 .long 0x68182 .byte 0183 .section .debug_abbrev,"",@progbits184 .Ldebug_abbrev0:185 .uleb128 0x1186 .uleb128 0x11187 .byte 0x1188 .uleb128 0x25189 .uleb128 0xe190 .uleb128 0x13191 .uleb128 0xb192 .uleb128 0x3193 .uleb128 0xe194 .uleb128 0x1b195 .uleb128 0xe196 .uleb128 0x11197 .uleb128 0x1198 .uleb128 0x12199 .uleb128 0x7200 .uleb128 0x10201 .uleb128 0x17202 .byte 0203 .byte 0204 .uleb128 0x2205 .uleb128 0x2e206 .byte 0x1207 .uleb128 0x3f208 .uleb128 0x19209 .uleb128 0x3210 .uleb128 0x8211 .uleb128 0x3a212 .uleb128 0xb213 .uleb128 0x3b214 .uleb128 0xb215 .uleb128 0x27216 .uleb128 0x19217 .uleb128 0x49218 .uleb128 0x13219 .uleb128 0x11220 .uleb128 0x1221 .uleb128 0x12222 .uleb128 0x7223 .uleb128 0x40224 .uleb128 0x18225 .uleb128 0x2116226 .uleb128 0x19227 .uleb128 0x1228 .uleb128 0x13229 .byte 0230 .byte 0231 .uleb128 0x3232 .uleb128 0x5233 .byte 0234 .uleb128 0x3235 .uleb128 0x8236 .uleb128 0x3a237 .uleb128 0xb238 .uleb128 0x3b239 .uleb128 0xb240 .uleb128 0x49241 .uleb128 0x13242 .uleb128 0x2243 .uleb128 0x18244 .byte 0245 .byte 0246 .uleb128 0x4247 .uleb128 0x34248 .byte 0249 .uleb128 0x3250 .uleb128 0x8251 .uleb128 0x3a252 .uleb128 0xb253 .uleb128 0x3b254 .uleb128 0xb255 .uleb128 0x49256 .uleb128 0x13257 .uleb128 0x2258 .uleb128 0x18259 .byte 0260 .byte 0261 .uleb128 0x5262 .uleb128 0x24263 .byte 0264 .uleb128 0xb265 .uleb128 0xb266 .uleb128 0x3e267 .uleb128 0xb268 .uleb128 0x3269 .uleb128 0x8270 .byte 0271 .byte 0272 .uleb128 0x6273 .uleb128 0x2e274 .byte 0x1275 .uleb128 0x3f276 .uleb128 0x19277 .uleb128 0x3278 .uleb128 0xe279 .uleb128 0x3a280 .uleb128 0xb281 .uleb128 0x3b282 .uleb128 0xb283 .uleb128 0x27284 .uleb128 0x19285 .uleb128 0x11286 .uleb128 0x1287 .uleb128 0x12288 .uleb128 0x7289 .uleb128 0x40290 .uleb128 0x18291 .uleb128 0x2117292 .uleb128 0x19293 .uleb128 0x1294 .uleb128 0x13295 .byte 0296 .byte 0297 .uleb128 0x7298 .uleb128 0xf299 .byte 0300 .uleb128 0xb301 .uleb128 0xb302 .uleb128 0x49303 .uleb128 0x13304 .byte 0305 .byte 0306 .byte 0307 .section .debug_aranges,"",@progbits308 .long 0x2c309 .value 0x2310 .long .Ldebug_info0311 .byte 0x8312 .byte 0313 .value 0314 .value 0315 .quad .Ltext0316 .quad .Letext0-.Ltext0317 .quad 0318 .quad 0319 .section .debug_line,"",@progbits320 .Ldebug_line0:321 .section .debug_str,"MS",@progbits,1322 .LASF0:323 .string "GNU C11 7.4.0 -mtune=generic -march=x86-64 -g -fexceptions -fPIC -fstack-protector-strong"324 .LASF2:325 .string "/home/tdelisle/workspace/cforall/main/doc/working/exception/impl"326 .LASF1:327 .string "test.c"328 .LASF3:329 .string "clean"330 103 .hidden DW.ref.__gcc_personality_v0 331 104 .weak DW.ref.__gcc_personality_v0 332 .section .data. rel.local.DW.ref.__gcc_personality_v0,"awG",@progbits,DW.ref.__gcc_personality_v0,comdat105 .section .data.DW.ref.__gcc_personality_v0,"awG",@progbits,DW.ref.__gcc_personality_v0,comdat 333 106 .align 8 334 107 .type DW.ref.__gcc_personality_v0, @object … … 336 109 DW.ref.__gcc_personality_v0: 337 110 .quad __gcc_personality_v0 338 .ident "GCC: (Ubuntu 7. 4.0-1ubuntu1~16.04~ppa1) 7.4.0"111 .ident "GCC: (Ubuntu 7.3.0-21ubuntu1~16.04) 7.3.0" 339 112 .section .note.GNU-stack,"",@progbits -
libcfa/src/concurrency/coroutine.cfa
r273ff10 rdef9d4e 83 83 84 84 void ^?{}(coroutine_desc& this) { 85 if(this.state != Halted && this.state != Start) {85 if(this.state != Halted) { 86 86 coroutine_desc * src = TL_GET( this_coroutine ); 87 87 coroutine_desc * dst = &this; -
src/Concurrency/Keywords.cc
r273ff10 rdef9d4e 575 575 576 576 //in reverse order : 577 // monitor_ dtor_guard_t __guard = { __monitors, func };577 // monitor_guard_t __guard = { __monitors, #, func }; 578 578 body->push_front( 579 579 new DeclStmt( new ObjectDecl( … … 634 634 assert(generic_func); 635 635 636 // in reverse order :636 //in reverse order : 637 637 // monitor_guard_t __guard = { __monitors, #, func }; 638 638 body->push_front( -
src/Concurrency/Waitfor.cc
r273ff10 rdef9d4e 66 66 void foo() { 67 67 while( true ) { 68 { 69 acceptable_t acceptables[3]; 70 if( a < 1 ) { 71 acceptables[0].func = f; 72 acceptables[0].mon = a; 68 69 acceptable_t acceptables[3]; 70 if( a < 1 ) { 71 acceptables[0].func = f; 72 acceptables[0].mon = a; 73 } 74 acceptables[1].func = g; 75 acceptables[1].mon = a; 76 77 acceptables[2].func = f; 78 acceptables[2].mon = a; 79 acceptables[2].is_dtor = true; 80 81 int ret = waitfor_internal( acceptables, swagl() ); 82 83 switch( ret ) { 84 case 0: 85 { 86 bar(); 73 87 } 74 acceptables[1].func = g; 75 acceptables[1].mon = a; 76 77 acceptables[2].func = f; 78 acceptables[2].mon = a; 79 acceptables[2].is_dtor = true; 80 81 int ret = waitfor_internal( acceptables, swagl() ); 82 83 switch( ret ) { 84 case 0: 88 case 1: 89 { 90 baz(); 91 } 92 case 2: 93 signal(a); 85 94 { 86 b ar();95 break; 87 96 } 88 case 1:89 {90 baz();91 }92 case 2:93 signal(a);94 {95 break;96 }97 }98 97 } 99 98 } … … 556 555 new ConstantExpr( Constant::from_ulong( i++ ) ), 557 556 { 558 new CompoundStmt({ 559 clause.statement, 560 new BranchStmt( 561 "", 562 BranchStmt::Break 563 ) 564 }) 557 clause.statement, 558 new BranchStmt( 559 "", 560 BranchStmt::Break 561 ) 565 562 } 566 563 ) … … 573 570 new ConstantExpr( Constant::from_int( -2 ) ), 574 571 { 575 new CompoundStmt({ 576 waitfor->timeout.statement, 577 new BranchStmt( 578 "", 579 BranchStmt::Break 580 ) 581 }) 572 waitfor->timeout.statement, 573 new BranchStmt( 574 "", 575 BranchStmt::Break 576 ) 582 577 } 583 578 ) … … 590 585 new ConstantExpr( Constant::from_int( -1 ) ), 591 586 { 592 new CompoundStmt({ 593 waitfor->orelse.statement, 594 new BranchStmt( 595 "", 596 BranchStmt::Break 597 ) 598 }) 587 waitfor->orelse.statement, 588 new BranchStmt( 589 "", 590 BranchStmt::Break 591 ) 599 592 } 600 593 ) -
src/Parser/TypeData.cc
r273ff10 rdef9d4e 322 322 function.params->printList( os, indent + 4 ); 323 323 } else { 324 os << string( indent + 2, ' ' ) << "with no parameters " << endl;324 os << string( indent + 2, ' ' ) << "with no parameters " << endl; 325 325 } // if 326 326 if ( function.idList ) { … … 347 347 os << DeclarationNode::aggregateNames[ aggregate.kind ] << ' ' << *aggregate.name << endl; 348 348 if ( aggregate.params ) { 349 os << string( indent + 2, ' ' ) << "with type parameters " << endl;349 os << string( indent + 2, ' ' ) << "with type parameters " << endl; 350 350 aggregate.params->printList( os, indent + 4 ); 351 351 } // if 352 352 if ( aggregate.actuals ) { 353 os << string( indent + 2, ' ' ) << "instantiated with actual parameters " << endl;353 os << string( indent + 2, ' ' ) << "instantiated with actual parameters " << endl; 354 354 aggregate.actuals->printList( os, indent + 4 ); 355 355 } // if 356 356 if ( aggregate.fields ) { 357 os << string( indent + 2, ' ' ) << "with members " << endl;357 os << string( indent + 2, ' ' ) << "with members " << endl; 358 358 aggregate.fields->printList( os, indent + 4 ); 359 359 } // if 360 360 if ( aggregate.body ) { 361 os << string( indent + 2, ' ' ) << " with body " << endl;361 os << string( indent + 2, ' ' ) << " with body " << endl; 362 362 } // if 363 363 break; … … 370 370 } // if 371 371 if ( aggInst.params ) { 372 os << string( indent + 2, ' ' ) << "with parameters " << endl;372 os << string( indent + 2, ' ' ) << "with parameters " << endl; 373 373 aggInst.params->printList( os, indent + 2 ); 374 374 } // if … … 381 381 } // if 382 382 if ( enumeration.body ) { 383 os << string( indent + 2, ' ' ) << " with body " << endl;383 os << string( indent + 2, ' ' ) << " with body " << endl; 384 384 } // if 385 385 break; … … 418 418 os << "tuple "; 419 419 if ( tuple ) { 420 os << "with members " << endl;420 os << "with members " << endl; 421 421 tuple->printList( os, indent + 2 ); 422 422 } // if … … 942 942 assert( td->typeexpr ); 943 943 // assert( td->typeexpr->expr ); 944 return new TypeofType{ 944 return new TypeofType{ 945 945 buildQualifiers( td ), td->typeexpr->build(), td->kind == TypeData::Basetypeof }; 946 946 } // buildTypeof -
src/SynTree/Expression.cc
r273ff10 rdef9d4e 456 456 457 457 void UntypedExpr::print( std::ostream &os, Indenter indent ) const { 458 os << "Applying untyped: " << std::endl;458 os << "Applying untyped: " << std::endl; 459 459 os << indent+1; 460 460 function->print(os, indent+1); 461 os << std::endl << indent << "...to: " << std::endl;461 os << std::endl << indent << "...to: " << std::endl; 462 462 printAll(args, os, indent+1); 463 463 Expression::print( os, indent ); -
src/SynTree/ReferenceToType.cc
r273ff10 rdef9d4e 205 205 206 206 Type::print( os, indent ); 207 os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type) ";207 os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type) "; 208 208 if ( ! parameters.empty() ) { 209 209 os << endl << indent << "... with parameters" << endl; -
src/SynTree/Type.cc
r273ff10 rdef9d4e 118 118 119 119 void QualifiedType::print( std::ostream & os, Indenter indent ) const { 120 os << "Qualified Type: " << endl;120 os << "Qualified Type: " << endl; 121 121 os << indent+1; 122 122 parent->print( os, indent+1 ); -
tests/.expect/alloc-ERROR.txt
r273ff10 rdef9d4e 1 alloc.cfa:265:1 error: No reasonable alternatives for expression Applying untyped: 1 alloc.cfa:265:1 error: No reasonable alternatives for expression Applying untyped: 2 2 Name: ?=? 3 ...to: 3 ...to: 4 4 Name: p 5 Applying untyped: 5 Applying untyped: 6 6 Name: realloc 7 ...to: 7 ...to: 8 8 Name: stp 9 Applying untyped: 9 Applying untyped: 10 10 Name: ?*? 11 ...to: 11 ...to: 12 12 Name: dim 13 Sizeof Expression on: Applying untyped: 13 Sizeof Expression on: Applying untyped: 14 14 Name: *? 15 ...to: 15 ...to: 16 16 Name: stp 17 17 … … 19 19 20 20 21 alloc.cfa:266:1 error: No reasonable alternatives for expression Applying untyped: 21 alloc.cfa:266:1 error: No reasonable alternatives for expression Applying untyped: 22 22 Name: ?=? 23 ...to: 23 ...to: 24 24 Name: p 25 Applying untyped: 25 Applying untyped: 26 26 Name: alloc 27 ...to: 27 ...to: 28 28 Name: stp 29 Applying untyped: 29 Applying untyped: 30 30 Name: ?*? 31 ...to: 31 ...to: 32 32 Name: dim 33 Sizeof Expression on: Applying untyped: 33 Sizeof Expression on: Applying untyped: 34 34 Name: *? 35 ...to: 35 ...to: 36 36 Name: stp 37 37 … … 39 39 40 40 41 alloc.cfa:267:1 error: No reasonable alternatives for expression Applying untyped: 41 alloc.cfa:267:1 error: No reasonable alternatives for expression Applying untyped: 42 42 Name: ?=? 43 ...to: 43 ...to: 44 44 Name: p 45 Applying untyped: 45 Applying untyped: 46 46 Name: memset 47 ...to: 47 ...to: 48 48 Name: stp 49 49 constant expression (10 10: signed int) 50 50 51 51 52 alloc.cfa:268:1 error: No reasonable alternatives for expression Applying untyped: 52 alloc.cfa:268:1 error: No reasonable alternatives for expression Applying untyped: 53 53 Name: ?=? 54 ...to: 54 ...to: 55 55 Name: p 56 Applying untyped: 56 Applying untyped: 57 57 Name: memcpy 58 ...to: 58 ...to: 59 59 Address of: 60 60 Name: st1 -
tests/.expect/completeTypeError.txt
r273ff10 rdef9d4e 1 completeTypeError.cfa:33:1 error: No reasonable alternatives for expression Applying untyped: 1 completeTypeError.cfa:33:1 error: No reasonable alternatives for expression Applying untyped: 2 2 Name: *? 3 ...to: 3 ...to: 4 4 Name: v 5 5 6 completeTypeError.cfa:34:1 error: No reasonable alternatives for expression Applying untyped: 6 completeTypeError.cfa:34:1 error: No reasonable alternatives for expression Applying untyped: 7 7 Name: *? 8 ...to: 8 ...to: 9 9 Name: y 10 10 11 completeTypeError.cfa:35:1 error: No reasonable alternatives for expression Applying untyped: 11 completeTypeError.cfa:35:1 error: No reasonable alternatives for expression Applying untyped: 12 12 Name: foo 13 ...to: 13 ...to: 14 14 Name: v 15 15 16 completeTypeError.cfa:36:1 error: No reasonable alternatives for expression Applying untyped: 16 completeTypeError.cfa:36:1 error: No reasonable alternatives for expression Applying untyped: 17 17 Name: baz 18 ...to: 18 ...to: 19 19 Name: v 20 20 21 completeTypeError.cfa:37:1 error: No reasonable alternatives for expression Applying untyped: 21 completeTypeError.cfa:37:1 error: No reasonable alternatives for expression Applying untyped: 22 22 Name: quux 23 ...to: 23 ...to: 24 24 Name: v 25 25 26 completeTypeError.cfa:58:1 error: No reasonable alternatives for expression Applying untyped: 26 completeTypeError.cfa:58:1 error: No reasonable alternatives for expression Applying untyped: 27 27 Name: baz 28 ...to: 28 ...to: 29 29 Name: y 30 30 31 completeTypeError.cfa:59:1 error: No reasonable alternatives for expression Applying untyped: 31 completeTypeError.cfa:59:1 error: No reasonable alternatives for expression Applying untyped: 32 32 Name: quux 33 ...to: 33 ...to: 34 34 Name: y 35 35 36 completeTypeError.cfa:60:1 error: No reasonable alternatives for expression Applying untyped: 36 completeTypeError.cfa:60:1 error: No reasonable alternatives for expression Applying untyped: 37 37 Name: *? 38 ...to: 38 ...to: 39 39 Name: y 40 40 41 completeTypeError.cfa:72:1 error: No resolvable alternatives for expression Applying untyped: 41 completeTypeError.cfa:72:1 error: No resolvable alternatives for expression Applying untyped: 42 42 Name: baz 43 ...to: 43 ...to: 44 44 Name: z 45 45 … … 51 51 ?=?: pointer to function 52 52 ... with parameters 53 reference to instance of type T (not function type) 54 instance of type T (not function type) 53 reference to instance of type T (not function type) 54 instance of type T (not function type) 55 55 ... returning 56 _retval__operator_assign: instance of type T (not function type) 56 _retval__operator_assign: instance of type T (not function type) 57 57 ... with attributes: 58 58 Attribute with name: unused … … 61 61 ?{}: pointer to function 62 62 ... with parameters 63 reference to instance of type T (not function type) 63 reference to instance of type T (not function type) 64 64 ... returning nothing 65 65 66 66 ?{}: pointer to function 67 67 ... with parameters 68 reference to instance of type T (not function type) 69 instance of type T (not function type) 68 reference to instance of type T (not function type) 69 instance of type T (not function type) 70 70 ... returning nothing 71 71 72 72 ^?{}: pointer to function 73 73 ... with parameters 74 reference to instance of type T (not function type) 74 reference to instance of type T (not function type) 75 75 ... returning nothing 76 76 … … 78 78 function 79 79 ... with parameters 80 pointer to instance of type T (not function type) 80 pointer to instance of type T (not function type) 81 81 ... returning nothing 82 82 83 83 ... to arguments 84 Variable Expression: z: pointer to instance of type T (not function type) 84 Variable Expression: z: pointer to instance of type T (not function type) 85 85 86 86 (types: 87 87 void 88 88 ) 89 Environment:( _73_0_T ) -> instance of type T (not function type) (no widening)89 Environment:( _73_0_T ) -> instance of type T (not function type) (no widening) 90 90 91 91 -
tests/.expect/declarationErrors.txt
r273ff10 rdef9d4e 6 6 7 7 declarationErrors.cfa:19:1 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0 8 with members 8 with members 9 9 i: int 10 with body 10 with body 11 11 12 12 13 13 declarationErrors.cfa:20:1 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1 14 with members 14 with members 15 15 i: int 16 with body 16 with body 17 17 18 18 … … 20 20 21 21 declarationErrors.cfa:24:1 error: duplicate const in declaration of f01: static inline function 22 with no parameters 22 with no parameters 23 23 returning const volatile int 24 24 25 25 26 26 declarationErrors.cfa:25:1 error: duplicate volatile in declaration of f02: static inline function 27 with no parameters 27 with no parameters 28 28 returning const volatile int 29 29 30 30 31 31 declarationErrors.cfa:26:1 error: duplicate const in declaration of f03: static inline function 32 with no parameters 32 with no parameters 33 33 returning const volatile int 34 34 35 35 36 36 declarationErrors.cfa:27:1 error: duplicate volatile in declaration of f04: static inline function 37 with no parameters 37 with no parameters 38 38 returning const volatile int 39 39 40 40 41 41 declarationErrors.cfa:28:1 error: duplicate const in declaration of f05: static inline function 42 with no parameters 42 with no parameters 43 43 returning const volatile int 44 44 45 45 46 46 declarationErrors.cfa:29:1 error: duplicate volatile in declaration of f06: static inline function 47 with no parameters 47 with no parameters 48 48 returning const volatile int 49 49 50 50 51 51 declarationErrors.cfa:30:1 error: duplicate const in declaration of f07: static inline function 52 with no parameters 52 with no parameters 53 53 returning const volatile int 54 54 55 55 56 56 declarationErrors.cfa:31:1 error: duplicate const, duplicate volatile in declaration of f08: static inline function 57 with no parameters 57 with no parameters 58 58 returning const volatile int 59 59 60 60 61 61 declarationErrors.cfa:33:1 error: duplicate const, duplicate volatile in declaration of f09: static inline function 62 with no parameters 62 with no parameters 63 63 returning const volatile int 64 64 65 65 66 66 declarationErrors.cfa:34:1 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function 67 with no parameters 67 with no parameters 68 68 returning const restrict volatile _Atomic int 69 69 -
tests/.expect/nested-types-ERR2.txt
r273ff10 rdef9d4e 1 1 nested-types.cfa:73:1 error: Use of undefined global type Z 2 2 nested-types.cfa:74:1 error: Qualified type requires an aggregate on the left, but has: signed int 3 nested-types.cfa:75:1 error: Undefined type in qualified type: Qualified Type: 3 nested-types.cfa:75:1 error: Undefined type in qualified type: Qualified Type: 4 4 instance of struct S with body 1 5 instance of type Z (not function type) 5 instance of type Z (not function type) 6 6 -
tests/concurrent/examples/datingService.cfa
r273ff10 rdef9d4e 33 33 signal_block( Boys[ccode] ); // restart boy to set phone number 34 34 } // if 35 sout | "Girl:" | PhoneNo | "is dating Boy at" | BoyPhoneNo | "with ccode" | ccode;36 35 return BoyPhoneNo; 37 36 } // DatingService girl … … 45 44 signal_block( Girls[ccode] ); // restart girl to set phone number 46 45 } // if 47 sout | " Boy:" | PhoneNo | "is dating Girl" | GirlPhoneNo | "with ccode" | ccode;48 46 return GirlPhoneNo; 49 47 } // DatingService boy … … 60 58 yield( random( 100 ) ); // don't all start at the same time 61 59 unsigned int partner = girl( TheExchange, id, ccode ); 60 sout | "Girl:" | id | "is dating Boy at" | partner | "with ccode" | ccode; 62 61 girlck[id] = partner; 63 62 } // Girl main … … 77 76 yield( random( 100 ) ); // don't all start at the same time 78 77 unsigned int partner = boy( TheExchange, id, ccode ); 78 sout | " Boy:" | id | "is dating Girl" | partner | "with ccode" | ccode; 79 79 boyck[id] = partner; 80 80 } // Boy main
Note:
See TracChangeset
for help on using the changeset viewer.