Changeset 7d7ef6f
- Timestamp:
- Feb 17, 2022, 2:35:23 PM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, master, pthread-emulation, qualifiedEnum
- Children:
- a556492
- Parents:
- 51b8582
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/math.trait.hfa
r51b8582 r7d7ef6f 16 16 #pragma once 17 17 18 trait Not( T) {19 void ?{}( T&, zero_t );20 int !?( T);18 trait Not( U ) { 19 void ?{}( U &, zero_t ); 20 int !?( U ); 21 21 }; // Not 22 22 … … 26 26 }; // Equality 27 27 28 trait Relational( T | Equality( T) ) {29 int ?<?( T, T);30 int ?<=?( T, T);31 int ?>?( T, T);32 int ?>=?( T, T);28 trait Relational( U | Equality( U ) ) { 29 int ?<?( U, U ); 30 int ?<=?( U, U ); 31 int ?>?( U, U ); 32 int ?>=?( U, U ); 33 33 }; // Relational 34 34 … … 39 39 }; // Signed 40 40 41 trait Additive( T | Signed( T) ) {42 T ?+?( T, T);43 T ?-?( T, T);44 T ?+=?( T &, T);45 T ?-=?( T &, T);41 trait Additive( U | Signed( U ) ) { 42 U ?+?( U, U ); 43 U ?-?( U, U ); 44 U ?+=?( U &, U ); 45 U ?-=?( U &, U ); 46 46 }; // Additive 47 47 … … 49 49 void ?{}( T &, one_t ); 50 50 // T ?++( T & ); 51 // T ++?( T & );51 // T ++?( T & ); 52 52 // T ?--( T & ); 53 53 // T --?( T & ); 54 54 }; // Incdec 55 55 56 trait Multiplicative( T | Incdec( T) ) {57 T ?*?( T, T);58 T ?/?( T, T);59 T ?%?( T, T);60 T ?/=?( T &, T);56 trait Multiplicative( U | Incdec( U ) ) { 57 U ?*?( U, U ); 58 U ?/?( U, U ); 59 U ?%?( U, U ); 60 U ?/=?( U &, U ); 61 61 }; // Multiplicative 62 62 -
src/AST/Decl.cpp
r51b8582 r7d7ef6f 39 39 if ( uniqueId ) return; // ensure only set once 40 40 uniqueId = ++lastUniqueId; 41 //idMap[ uniqueId ] = this; 41 // The extra readonly pointer is causing some reference counting issues. 42 // idMap[ uniqueId ] = this; 42 43 } 43 44 44 45 readonly<Decl> Decl::fromId( UniqueId id ) { 46 // Right now this map is always empty, so don't use it. 45 47 assert( false ); 46 48 IdMapType::const_iterator i = idMap.find( id ); -
src/SynTree/TypeSubstitution.cc
r51b8582 r7d7ef6f 146 146 } 147 147 148 static bool are_same( TypeInstType * left, TypeInstType * right ) {149 if ( left->baseType && right->baseType ) {150 return left->baseType == right->baseType;151 } else {152 return left->name == right->name;153 }154 }155 156 148 Type * TypeSubstitution::Substituter::postmutate( TypeInstType *inst ) { 157 149 BoundVarsType::const_iterator bound = boundVars.find( inst->name ); … … 166 158 // TODO: investigate preventing type variables from being bound to themselves in the first place. 167 159 if ( TypeInstType * replacement = dynamic_cast< TypeInstType * >( i->second ) ) { 168 if ( are_same( inst, replacement )) {160 if ( inst->name == replacement->name ) { 169 161 return inst; 170 162 }
Note: See TracChangeset
for help on using the changeset viewer.