Skip to content

Instantly share code, notes, and snippets.

@retronym
Created August 19, 2012 22:10
Show Gist options
  • Save retronym/3398083 to your computer and use it in GitHub Desktop.
Save retronym/3398083 to your computer and use it in GitHub Desktop.
Just Do It: TODO comments in scala/scala git-blamed on commits between 2.9.2 and 2.10-0-SNAPSHOT
========================================
Adriaan Moors
========================================
= src/compiler/scala/tools/nsc/ast/TreeGen.scala
1dbcbd5 2012-02-17 75 // TODO: would be so much nicer if we would know during match-translation (i.e., type checking)
= src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
2890714 2012-04-24 536 // TODO: clean this up -- there is too much information packked into makePatDef's `pat` argument
= src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
a57ac60 2012-02-13 1107 var ctx1 = genLoad(selector, ctx, INT) // TODO: Java 7 allows strings in switches (so, don't assume INT and don't convert the literals using intValue)
= src/compiler/scala/tools/nsc/transform/Erasure.scala
3515ac4 2012-04-13 508 && !afterErasure((member.tpe <:< other.tpe))) // no static guarantees (TODO: is the subtype test ever true?)
= src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala
891a6e4 2011-10-20 532 // TODO remove the synthetic `<outer>` method from outerFor??
891a6e4 2011-10-20 534 val outerFor = sel.symbol.owner.toInterface // TODO: toInterface necessary?
= src/compiler/scala/tools/nsc/transform/TailCalls.scala
d786f26 2012-03-22 354 // we tail-called -- TODO: shield from false-positives where we rewrite but don't tail-call
= src/compiler/scala/tools/nsc/typechecker/Duplicators.scala
2d3b309 2012-03-16 291 val newsym = p.symbol.cloneSymbol //(context.owner) // TODO owner?
2d3b309 2012-03-16 296 val rhs1 = (new TreeSubstituter(params map (_.symbol), params1) transform rhs) // TODO: duplicate?
1890a41 2012-03-29 277 // in case the rhs contains any definitions -- TODO: is this necessary?
= src/compiler/scala/tools/nsc/typechecker/Infer.scala
b908232 2012-03-02 1205 // TODO: reinstate checkBounds, return params that fail to meet their bounds to undetparams
e1c8e2d 2012-04-13 1302 * TODO: at the very least, reduce duplication wrt checkCheckable
98a5f06 2012-07-24 93 // TODO: update spec to reflect we allow any ProductN, not just TupleN
= src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala
8a9fd64 2011-10-20 34 * (longer-term) TODO:
8a9fd64 2011-10-20 446 // TODO: check unargs == args
8a9fd64 2011-10-20 482 provided the run-time type of v is also an instance of T, <-- TODO! https://issues.scala-lang.org/browse/SI-1503
8a9fd64 2011-10-20 506 /* TODO: Paul says about future version: I think this should work, and always intended to implement if I can get away with it.
8a9fd64 2011-10-20 1176 (that is, a pattern match involved a comparison of the matched value with p using method eq in class AnyRef). // TODO: the actual pattern matcher uses ==, so that's what I'm using for now
8a9fd64 2011-10-20 1186 - A parameterized type pattern scala.Array[T1], where T1 is a type pattern. // TODO
8a9fd64 2011-10-20 1361 // TODO: assign more fine-grained positions
b80ad1f 2011-11-13 411 // TODO: extractor.paramType may contain unbound type params (run/t2800, run/t3530)
b80ad1f 2011-11-13 598 Some(this(extractorCall, args)) // TODO: simplify spliceApply?
6d5a16b 2011-11-19 1360 // TODO: do this during tree construction, but that will require tracking the current owner in treemakers
4fca89b 2011-11-22 416 // TODO: the outer check is mandated by the spec for case classes, but we do it for user-defined unapplies as well [SPEC]
ae054a1 2011-11-22 558 // TODO: can we rework the typer so we don't have to do all this twice?
ae054a1 2011-11-22 1249 // need to substitute to deal with existential types -- TODO: deal with existentials better, don't substitute (see RichClass during quick.comp)
fc0c123 2011-11-25 705 // TODO: fix the illegal type bound in pos/t602 -- type inference messes up before we get here:
e0b8877 2011-11-27 1629 // TODO: improve, e.g., for constants
e0b8877 2011-11-27 1668 // TODO check:
e0b8877 2011-11-27 1687 case tp@RefinedType(parents, EmptyScope) => tp.memo(tp: Type)(identity) // TODO: does this help?
e0b8877 2011-11-27 3084 // store the result of the final test and the intermediate results in hoisted mutable variables (TODO: optimize: don't store intermediate results that aren't used)
d4182c7 2011-12-15 3197 // TODO: non-trivial dead-code elimination
03f00fe 2011-12-28 30 * TODO:
03f00fe 2011-12-28 533 // TODO: 1) if we want to support a generalisation of Kotlin's patmat continue, must not hard-wire lifting into the monad (which is now done by codegen.one),
03f00fe 2011-12-28 700 // TODO: to be called when there's a def unapplyProd(x: T): U
c58b240 2012-01-08 1145 // if there's an outer accessor, otherwise the condition becomes `true` -- TODO: can we improve needsOuterTest so there's always an outerAccessor?
c58b240 2012-01-08 1200 // TODO: `null match { x : T }` will yield a check that (indirectly) tests whether `null ne null`
a57ac60 2012-02-13 324 // if we fail to emit a fine-grained switch, have to do translateCase again with a single scrutSym (TODO: uniformize substitution on treemakers so we can avoid this)
a57ac60 2012-02-13 343 Bind(exSym, Ident(nme.WILDCARD)), // TODO: does this need fixing upping?
312d769 2012-02-13 1515 typer.typed(_match(vpmName.one), EXPRmode | POLYmode | TAPPmode | FUNmode, WildcardType).tpe // TODO: error message
a57ac60 2012-02-13 1524 // TODO: consider catchAll, or virtualized matching will break in exception handlers
a57ac60 2012-02-13 3207 //// SWITCHES -- TODO: operate on Tests rather than TreeMakers
a57ac60 2012-02-13 3498 Some(Literal(Constant(const.intValue))) // TODO: Java 7 allows strings in switches
a57ac60 2012-02-13 3523 // TODO: if patterns allow switch but the type of the scrutinee doesn't, cast (type-test) the scrutinee to the corresponding switchable type and switch on the result
a57ac60 2012-02-13 3544 val alternativesSupported = false // TODO: needs either back-end support of flattening of alternatives during typers
a57ac60 2012-02-13 3547 // TODO: there are more treemaker-sequences that can be handled by type tests
a57ac60 2012-02-13 3572 // TODO: drop null checks
b046a6e 2012-03-14 1339 // TODO: improve notion of trivial/irrefutable -- a trivial type test before the body still makes for a default case
20426fb 2012-03-23 330 if cases forall treeInfo.isCatchCase; // must check again, since it's not guaranteed -- TODO: can we eliminate this? e.g., a type test could test for a trait or a non-trivial prefix, which are not handled by the back-end
1b8dc12 2012-04-30 740 // TODO: figure out why...
89d0697 2012-05-02 89 // setType origTp intended for CPS -- TODO: is it necessary?
0497c15 2012-05-22 1120 // TODO: can probably always widen
0497c15 2012-05-22 1217 // TODO: [SPEC] the spec requires `eq` instead of `==` for singleton types
0497c15 2012-05-22 1227 // TODO: verify that we don't need to special-case Array
0497c15 2012-05-22 1623 // // if there's an outer accessor, otherwise the condition becomes `true` -- TODO: can we improve needsOuterTest so there's always an outerAccessor?
0497c15 2012-05-22 1752 def eqTest(pat: Tree, testedBinder: Symbol) = EqualityCond(binderToUniqueTree(testedBinder), unique(pat)) // TODO: eq, not ==
3f7b8b5 2012-05-22 1931 def apply(x: Prop): Prop = x match { // TODO: mapConserve
3f7b8b5 2012-05-22 2158 // returns all solutions, if any (TODO: better infinite recursion backstop -- detect fixpoint??)
3f7b8b5 2012-05-22 2289 // TODO: there seems to be bug for singleton domains (variable does not show up in model)
3f7b8b5 2012-05-22 2680 // TODO case _ if tp.isTupleType => // recurse into component types
3f7b8b5 2012-05-22 2704 val subTpApprox = typer.infer.approximateAbstracts(subTp) // TODO: needed?
3f7b8b5 2012-05-22 2715 // TODO: this is subject to the availability of TypeTags (since an abstract type with a type tag is checkable at run time)
3f7b8b5 2012-05-22 2717 // TODO: this is extremely rough...
3f7b8b5 2012-05-22 2719 // TODO: when type tags are available, we will check -- when this is implemented, can we take that into account here?
3f7b8b5 2012-05-22 2774 // TODO: null tests generate too much noise, so disabled them -- is there any way to bring them back?
3f7b8b5 2012-05-22 2921 val (eqTo, neqTo) = varAssignment.getOrElse(variable, (Nil, Nil)) // TODO
3f7b8b5 2012-05-22 3003 // TODO: improve reasoning -- in the mean time, a false negative is better than an annoying false positive
0497c15 2012-05-22 3168 // TODO: have super-trait for retrieving the variable that's operated on by a tree maker
0497c15 2012-05-22 3186 // TODO: finer-grained duplication -- MUST duplicate though, or we'll get VerifyErrors since sharing trees confuses lambdalift,
0497c15 2012-05-22 3551 case tm@TypeTestTreeMaker(_, _, pt, _) if tm.isPureTypeTest => // -- TODO: use this if binder does not occur in the body
379384c 2012-05-29 2591 // TODO: model dependencies between variables: if V1 corresponds to (x: List[_]) and V2 is (x.hd), V2 cannot be assigned when V1 = null or V1 = Nil
3cb72fa 2012-06-03 32 * - update spec and double check it's implemented correctly (see TODO's)
3cb72fa 2012-06-03 1954 // TODO: for V1 representing x1 and V2 standing for x1.head, encode that
97c3383 2012-06-08 2471 // duplicate, don't mutate old tree (TODO: use a map tree -> type instead?)
54b2606 2012-06-11 50 // TODO: the inliner fails to inline the closures to patmatDebug
3601b34 2012-06-11 2672 // TODO: domain of other feasibly enumerable built-in types (char?)
3601b34 2012-06-11 2675 // TODO case _ if tp.isTupleType => // recurse into component types?
64acb46 2012-07-02 3219 // TODO: make more fine-grained, as we don't always need to jump
64acb46 2012-07-02 3476 // TODO: can b.tpe ever be null? can't really use pt, see e.g. pos/t2683 or cps/match1.scala
8234ba3 2012-07-04 1574 // TODO: remove Cond, replace by Prop from Logic
8234ba3 2012-07-04 1746 def outerTest(testedBinder: Symbol, expectedTp: Type) = TrueCond // TODO OuterEqCond(testedBinder, expectedType)
8234ba3 2012-07-04 3045 case OrCond(_, _) => Set(FalseCond) // TODO: make more precise
ef2bf41 2012-07-10 3299 // TODO: I don't think the binder's types can actually be different (due to checks in caseEquals)
ef2bf41 2012-07-10 3301 // TODO: reuse name exactly if there's only one binder in binders
aa6fa46 2012-07-12 95 // TODO: this should never happen; error should've been reported during type checking
aa6fa46 2012-07-12 943 * TODO: clean this up, would be nicer to have some higher-level way to compute
4276f61 2012-07-13 1736 * TODO: don't ignore outer-checks
4276f61 2012-07-13 1780 // TODO: make it more general List(1, 2) => 1 :: 2 :: Nil -- not sure this is a good idea...
c2aa17a 2012-07-20 1076 * TODO: make this user-definable as follows
e232a61 2012-08-08 2403 val todo = equalitySyms filterNot (b => (b.const == sym.const) || excludedPair(ExcludedPair(b.const, sym.const)))
e232a61 2012-08-08 2404 val (excluded, notExcluded) = todo partition (b => excludes(sym.const, b.const))
9108b25 2012-08-09 2559 assert(!(tp =:= NullTp)) // TODO: assert(!tp.isStable)
9285bdb 2012-08-14 2060 // TODO: be smarter/more efficient about this (http://lara.epfl.ch/w/sav09:tseitin_s_encoding)
= src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala
1b8dc12 2012-04-30 341 // TODO: shouldn't the next line be: `original resetFlag CASEACCESSOR`?
= src/compiler/scala/tools/nsc/typechecker/Typers.scala
29bcade 2012-03-06 964 * since method application is the only way to generate this slack between run-time and compile-time types (TODO: right!?),
29bcade 2012-03-06 1014 val ptSafe = variantToSkolem(pt) // TODO: pt.skolemizeExistential(context.owner, tree) ?
8552740 2012-03-17 4131 // TODO: skolemize (lub of packed types) when that no longer crashes on files/pos/t4070b.scala
2286d7b 2012-03-30 689 tree.setType(MethodType(List(), singleType(pre, sym))) // TODO: should this be a NullaryMethodType?
b92eb70 2012-04-05 5496 // TODO: can we achieve the pattern matching bit of the string interpolation SIP without this?
1716526 2012-04-26 2417 private val arity = if (isFunctionType(pt)) targs.length - 1 else 1 // TODO pt should always be a (Partial)Function, right?
bc860f3 2012-04-27 2540 // TODO: figure out the details (T @cps[U] is not a subtype of Any, but then why does it work for the apply method?)
1b8dc12 2012-04-30 2392 // TODO: add fallback __match sentinel to predef
1b8dc12 2012-04-30 2401 typed((new PureMatchTranslator(this.asInstanceOf[patmat.global.analyzer.Typer] /*TODO*/, matchStrategy)).translateMatch(match_), mode, pt)
1b8dc12 2012-04-30 2411 // TODO: remove FunctionN support -- this is currently designed so that it can emit FunctionN and PartialFunction subclasses
1b8dc12 2012-04-30 2414 // TODO: remove PartialFunction support from UnCurry
6b3ef4f 2012-06-04 3291 // TODO: disable when in unchecked match
= src/compiler/scala/tools/reflect/MacroImplementations.scala
623b739 2012-07-06 112 // TODO: place error message on conversion string
= src/library/scala/Predef.scala
d5b81b6 2011-10-20 127 @inline def implicitly[T](implicit e: T) = e // for summoning implicit values from the nether world -- TODO: when dependent method types are on by default, give this result type `e.type`, so that inliner has better chance of knowing which method to inline in calls like `implicitly[MatchingStrategy[Option]].zero`
= src/reflect/scala/reflect/internal/Positions.scala
d5b81b6 2011-10-20 44 super.traverse(t) // TODO: bug? shouldn't the traverse be outside of the if?
= src/reflect/scala/reflect/internal/Symbols.scala
75eb8a4 2012-07-24 352 // TODO: it would be better to allocate a new bit in the flag long for GADTSkolem rather than OR'ing together CASEACCESSOR | SYNTHETIC
= src/reflect/scala/reflect/internal/TreeInfo.scala
0391436 2012-07-24 474 // TODO: move to Flags
= src/reflect/scala/reflect/internal/Trees.scala
d5b81b6 2011-10-20 1346 else if (tree.symbol == from.head) to.head.shallowDuplicate // TODO: does it ever make sense *not* to perform a shallowDuplicate on `to.head`?
996f96f 2012-04-24 406 // TODO remove this class, add a tree attachment to Apply to track whether implicits were involved
996f96f 2012-04-24 410 // TODO remove this class, add a tree attachment to Apply to track whether implicits were involved
996f96f 2012-04-24 572 (tree match { // TODO: use a tree attachment to track whether this is an apply to implicit args or a view
996f96f 2012-04-24 575 // TODO: ApplyConstructor ???
= src/reflect/scala/reflect/internal/Types.scala
7a5aaa9 2012-05-03 1758 // TODO see comments around def intersectionType and def merge
7a5aaa9 2012-05-03 3529 val clazz = owner.newRefinementClass(pos) // TODO: why were we passing in NoPosition instead of pos?
========================================
Alex Cruise
========================================
= src/library/scala/xml/Utility.scala
e7ea29c 2012-03-08 197 * @todo use a Writer instead
========================================
Christopher Vogt
========================================
= src/reflect/scala/reflect/api/StandardNames.scala
bbd2e43 2012-09-18 13 // TODO: document better
= src/reflect/scala/reflect/api/TagInterop.scala
bbd2e43 2012-09-18 5 // TODO `mirror` parameters are now of type `Any`, because I can't make these path-dependent types work
= src/reflect/scala/reflect/api/TypeTags.scala
bbd2e43 2012-09-18 14 * TODO
========================================
Damien
========================================
= src/compiler/scala/tools/nsc/doc/html/page/diagram/DiagramGenerator.scala
c85b4a4 2012-06-13 31 // TODO: This is tailored towards the dot generator, since it's the only generator. In the future it should be more
========================================
Eugene Burmako
========================================
= src/compiler/scala/reflect/macros/runtime/Parsers.scala
ce67870 2012-06-06 12 // todo. provide decent implementation
= src/compiler/scala/reflect/macros/runtime/Reifiers.scala
178069e 2012-06-07 43 // fixme: if I put utils here, then "global" from utils' early initialization syntax
= src/compiler/scala/reflect/reify/Reifier.scala
814cf34 2012-04-12 86 // todo. why do we resetAllAttrs?
814cf34 2012-04-12 107 // todo. this is a common problem with non-trivial macros in our current macro system
= src/compiler/scala/reflect/reify/States.scala
6355d1a 2012-06-06 25 // todo. rewrite the reifier so that we don't need mutable state anymore
= src/compiler/scala/reflect/reify/codegen/GenAnnotationInfos.scala
5e4c47f 2012-04-14 31 // todo. every AnnotationInfo is an island, entire of itself
= src/compiler/scala/reflect/reify/codegen/GenSymbols.scala
814cf34 2012-04-12 92 // todo. make sure that free methods and free local defs work correctly
= src/compiler/scala/reflect/reify/codegen/GenTypes.scala
6355d1a 2012-06-06 119 // todo. write a test for this
= src/compiler/scala/reflect/reify/phases/Calculate.scala
46d57d4 2012-08-15 12 def isLocalToReifee = (localSymbols contains sym) // todo. how do I account for local skolems?
= src/compiler/scala/reflect/reify/phases/Metalevels.scala
6355d1a 2012-06-06 138 // todo. also inline usages of ``inlineableBindings'' in the symtab itself
= src/compiler/scala/reflect/reify/utils/Extractors.scala
6355d1a 2012-06-06 110 // todo. doesn't take into account optimizations such as $u.TypeTag.Int or the upcoming closure optimization
6355d1a 2012-06-06 135 // todo. doesn't take into account optimizations such as $u.TypeTag.Int or the upcoming closure optimization
= src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
6bb5975 2012-06-06 350 else rootMirror.getClassByName(name.replace('/', '.')) // TODO fails for inner classes (but this hasn't been tested).
= src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
814cf34 2012-04-12 369 // TODO: other Tags: NoTag, UnitTag, ClazzTag, EnumTag, ArrayTag ???
814cf34 2012-04-12 392 // TODO: other Tags: NoTag, UnitTag, ClazzTag, EnumTag ???
= src/compiler/scala/tools/nsc/interpreter/IMain.scala
46d57d4 2012-08-15 148 // todo. if this crashes, REPL will hang
= src/compiler/scala/tools/nsc/typechecker/Implicits.scala
814cf34 2012-04-12 1207 // todo. migrate hardcoded materialization in Implicits to corresponding implicit macros
f54e5c8 2012-04-22 1221 * no manifest is found. todo: make this instantiate take type params as well?
6bb5975 2012-06-06 1308 // todo. write a test for this
46d57d4 2012-08-15 1366 * todo. the following lines should be deleted after we migrate delegate tag materialization to implicit macros
= src/compiler/scala/tools/nsc/typechecker/Macros.scala
814cf34 2012-04-12 134 // for now I leave it as a todo and move along to more the important stuff
814cf34 2012-04-12 574 // todo. infer precise typetag for this Expr, namely the declared type of the corresponding macro impl argument
814cf34 2012-04-12 871 // todo. expansion should work from the inside out
46d57d4 2012-08-15 135 // todo. refactor when fixing SI-5498
= src/compiler/scala/tools/nsc/typechecker/Typers.scala
46d57d4 2012-08-15 911 // todo. the commented line below makes sense for typechecking, say, TypeApply(Ident(`some abstract type symbol`), List(...))
46d57d4 2012-08-15 2651 // todo. investigate whether something can be done about this
= src/compiler/scala/tools/reflect/ToolBoxFactory.scala
814cf34 2012-04-12 136 // todo. also fixup singleton types
814cf34 2012-04-12 309 // todo. is not going to work with quoted arguments with embedded whitespaces
= src/compiler/scala/tools/reflect/package.scala
6bb5975 2012-06-06 12 // [todo: can we generalize this?
6bb5975 2012-06-06 19 // todo. replace this with an implicit class, once the pesky warning is gone
= src/library/scala/reflect/ClassManifestDeprecatedApis.scala
f54e5c8 2012-04-22 219 * todo: remove after next boostrap
= src/reflect/scala/reflect/api/FrontEnds.scala
814cf34 2012-04-12 68 // todo. untangle warningsAsErrors from Reporters. I don't feel like moving this flag here!
= src/reflect/scala/reflect/api/Mirrors.scala
46d57d4 2012-08-15 24 // todo. an improvement might be having mirrors reproduce the structure of the reflection domain
= src/reflect/scala/reflect/api/StandardDefinitions.scala
6bb5975 2012-06-06 64 def ArrayModule_overloadedApply: TermSymbol // todo. fix the bug in Definitions.getMemberMethod
6bb5975 2012-06-06 65 def Array_apply: TermSymbol // todo. fix the bug in Definitions.getMemberMethod
6bb5975 2012-06-06 66 def Array_clone: TermSymbol // todo. fix the bug in Definitions.getMemberMethod
6bb5975 2012-06-06 67 def Array_length: TermSymbol // todo. fix the bug in Definitions.getMemberMethod
6bb5975 2012-06-06 68 def Array_update: TermSymbol // todo. fix the bug in Definitions.getMemberMethod
6bb5975 2012-06-06 75 def Iterator_apply: TermSymbol // todo. fix the bug in Definitions.getMemberMethod
6bb5975 2012-06-06 78 def List_apply: TermSymbol // todo. fix the bug in Definitions.getMemberMethod
= src/reflect/scala/reflect/api/package.scala
9892f52 2012-07-24 77 // todo. once we have implicit macros for tag generation, we can remove these anchors
= src/reflect/scala/reflect/internal/Definitions.scala
6bb5975 2012-06-06 332 // I could just change `isOmittablePrefix`, but there's more to it, so I'm leaving this as a todo for now
46d57d4 2012-08-15 1057 // todo. member symbol becomes a term symbol in cleanup. is this a bug?
= src/reflect/scala/reflect/internal/Importers.scala
814cf34 2012-04-12 19 // todo. fix this loophole
814cf34 2012-04-12 51 // todo. careful import of positions
= src/reflect/scala/reflect/internal/Mirrors.scala
46d6410 2012-07-17 77 // todo: get rid of most the methods here and keep just staticClass/Module/Package
= src/reflect/scala/reflect/internal/Printers.scala
46d57d4 2012-08-15 6 // todo. we need to unify this prettyprinter with NodePrinters
= src/reflect/scala/reflect/internal/Symbols.scala
6bb5975 2012-06-06 1740 * TODO: formulate as enclosingSuchThat, after making sure
6bb5975 2012-06-06 1742 * TODO: Also harmonize with enclClass, enclMethod etc.
= src/reflect/scala/reflect/internal/Trees.scala
6bb5975 2012-06-06 18 val id = nodeCount // TODO: add to attachment?
= src/reflect/scala/reflect/internal/Types.scala
814cf34 2012-04-12 4101 // todo. move these into scala.reflect.api
= src/reflect/scala/reflect/macros/Context.scala
814cf34 2012-04-12 4 // todo. introduce context hierarchy
= src/reflect/scala/reflect/macros/Parsers.scala
ba3a9e0 2012-09-14 8 // todo. distinguish between `parse` and `parse`
= src/reflect/scala/reflect/runtime/JavaMirrors.scala
432d7b8 2012-08-04 374 // todo. this doesn't account for multiple vararg parameter lists
46d57d4 2012-08-15 744 * TODO - find all such calls and wrap them.
46d57d4 2012-08-15 745 * TODO - create mechanism to avoid the recurrence of unwrapped calls.
46d57d4 2012-08-15 1265 // todo. this makes toolbox tests pass, but it's a mere workaround for SI-5865
= src/reflect/scala/reflect/runtime/SymbolLoaders.scala
46d57d4 2012-08-15 65 // todo. reflection meeting verdict: need to enter the symbols into the first symbol in the owner chain that has a non-empty scope
========================================
Heather Miller
========================================
= src/library/scala/concurrent/SyncVar.scala
4f693ed 2012-05-16 77 // TODO: this method should be private
========================================
Hubert Plociniczak
========================================
= src/compiler/scala/tools/nsc/interactive/Global.scala
1111b27 2011-09-23 935 // TODO: guard with try/catch to deal with ill-typed qualifiers.
= src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
c800d1f 2012-01-25 824 // TODO: no test case
= src/compiler/scala/tools/nsc/typechecker/Contexts.scala
c800d1f 2012-01-25 290 // TODO: remove? Doesn't seem to be used
c800d1f 2012-01-25 395 // TODO remove
= src/compiler/scala/tools/nsc/typechecker/Infer.scala
4f99c2e 2012-03-06 1612 // todo: missing test case
= src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
c800d1f 2012-01-25 397 // TODO #3649 can create spurious errors when companion object is gone (because it becomes unlinked from scope)
= src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
c800d1f 2012-01-25 482 // TODO: should be replaced by throwErrors
= src/reflect/scala/reflect/internal/Types.scala
c800d1f 2012-01-25 7012 // TODO: RecoverableCyclicReference should be separated from TypeError,
========================================
Josh Suereth
========================================
= src/compiler/scala/tools/ant/ClassloadVerify.scala
8f3c3f5 2011-08-29 43 // TODO - Log success
= src/library/scala/collection/TraversableViewLike.scala
ab07db1 2011-12-18 216 (newMapped(x => asPair(x)._1), newMapped(x => asPair(x)._2)) // TODO - Performance improvements.
ab07db1 2011-12-18 219 (newMapped(x => asTriple(x)._1), newMapped(x => asTriple(x)._2), newMapped(x => asTriple(x)._3)) // TODO - Performance improvements.
= src/library/scala/collection/mutable/Queue.scala
eb2f37c 2012-08-08 171 // TODO - Don't override this just for new to create appropriate type....
========================================
Kato Kazuyoshi
========================================
= src/library/scala/util/parsing/ast/Binders.scala
60c8697 2011-06-18 29 trait Mapper { def apply[T <% Mappable[T]](x: T): T } /* TODO: having type `Forall T. T => T` is too strict:
1db8243 2011-06-18 128 // TODO: strengthen this condition so that no binders may be added after this scope has been
1db8243 2011-06-18 305 //TODO: more documentation
1db8243 2011-06-18 326 // TODO: move this to some utility object higher in the scala hierarchy?
= src/reflect/scala/reflect/internal/Types.scala
60c8697 2011-06-18 3271 * TODO: make these constraints count (incorporate them into implicit search in `applyImplicitArgs`)
========================================
Martin Odersky
========================================
= src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
17f0c48 2012-08-15 2885 case DOUBLE => emit(Opcodes.DCMPL) // TODO bug? why not DCMPG? http://docs.oracle.com/javase/specs/jvms/se5.0/html/Instructions2.doc3.html
= src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala
e156d4a 2012-05-29 85 // todo: find out initialization sequence for pkg/pkg.moduleClass is different from enterModule
= src/compiler/scala/tools/nsc/transform/Erasure.scala
1241af3 2012-08-15 1068 unboundedGenericArrayLevel(arg.tpe) > 0) => // !!! todo: simplify by having GenericArray also extract trees
= src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala
c297b97 2012-04-11 231 // TODO: need to shuffle annotations between wrapper and class.
= src/compiler/scala/tools/nsc/typechecker/Typers.scala
1c89ab7 2012-04-12 4655 case SelectFromTypeTree(qual@TypeTree(), name) if qual.tpe.typeArgs.nonEmpty => // TODO: somehow the new qual is not checked in refchecks
= src/compiler/scala/tools/nsc/util/SimpleTracer.scala
274ce61 2011-09-25 4 // todo: We should unify this with Tracer. I'd do it but Tracer is
= src/compiler/scala/tools/util/VerifyClass.scala
e4db7e0 2012-07-20 16 case x: Throwable => // TODO: only catch VerifyError (and related) + ExceptionInInitializationError (for static objects that bomb on classload)
= src/reflect/scala/reflect/internal/Importers.scala
c749710 2012-01-25 302 // !!! todo: override to cater for PackageScopes
= src/reflect/scala/reflect/internal/Types.scala
d8add36 2011-08-30 2382 else typeFunAnon(tpars, copyTypeRef(this, pre, sym, tpars map (_.tpeHK))) // todo: also beta-reduce?
========================================
Micro Dotta
========================================
= src/compiler/scala/tools/nsc/interactive/tests/InteractiveTest.scala
6ba1b9f 2011-08-17 108 //TODO: integrate random tests!, i.e.: if (runRandomTests) randomTests(20, sourceFiles)
========================================
Miguel Garcia
========================================
= src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala
6255c48 2012-02-17 516 /* TODO Do we want to perform inlining in non-finally exception handlers?
1703736 2012-08-06 740 // TODO move the following assertion to typeFlowLattice.lub2 for wider applicability (ie MethodTFA in addition to MTFAGrowable).
= src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
454c2a0 2012-05-08 64 // TODO: make this next claim true, if possible
454c2a0 2012-05-08 143 // TODO A ScalapBytecodeWriter could take asm.util.Textifier as starting point.
454c2a0 2012-05-08 199 * TODO but why? what use could javaNameCache possibly see once GenJVM is over?
454c2a0 2012-05-08 202 /* TODO After emitting all class files (e.g., in a separate compiler phase) ASM can perform bytecode verification:
454c2a0 2012-05-08 393 global.lub(List(a.tpe, b.tpe)).typeSymbol // TODO assert == firstCommonSuffix of resp. parents
454c2a0 2012-05-08 419 lcaName // TODO ASM caches the answer during the lifetime of a ClassWriter. We outlive that. Do some caching.
454c2a0 2012-05-08 524 // TODO check where ASM throws the equivalent of CodeSizeTooBigException
454c2a0 2012-05-08 582 // TODO: some beforeFlatten { ... } which accounts for
454c2a0 2012-05-08 697 for (innerSym <- allInners sortBy (_.name.length)) { // TODO why not sortBy (_.name.toString()) ??
454c2a0 2012-05-08 715 // TODO is it ok for prevOName to be null? (Someone should really document the invariants of the InnerClasses bytecode attribute)
454c2a0 2012-05-08 730 * TODO assert (JVMS 4.7.6 The InnerClasses attribute)
454c2a0 2012-05-08 855 // classes, as they are monomorphic (TODO: ok?)
454c2a0 2012-05-08 970 assert(strs.size > 1, "encode instead as one String via strEncode()") // TODO too strict?
454c2a0 2012-05-08 993 assert(const.value != null, const) // TODO this invariant isn't documented in `case class Constant`
454c2a0 2012-05-08 1114 // TODO: evaluate the other flags we might be dropping on the floor here.
454c2a0 2012-05-08 1115 // TODO: ACC_SYNTHETIC ?
454c2a0 2012-05-08 1120 // TODO needed? for(ann <- m.annotations) { ann.symbol.initialize }
454c2a0 2012-05-08 1575 // TODO needed? for(ann <- m.symbol.annotations) { ann.symbol.initialize }
454c2a0 2012-05-08 1591 // TODO param names: (m.params map (p => javaName(p.sym)))
454c2a0 2012-05-08 1647 jclass.visitField(PublicStaticFinal, // TODO confirm whether we really don't want ACC_SYNTHETIC nor ACC_DEPRECATED
454c2a0 2012-05-08 1665 PublicStatic, // TODO confirm whether we really don't want ACC_SYNTHETIC nor ACC_DEPRECATED
454c2a0 2012-05-08 1742 assert(const.value != null, const) // TODO this invariant isn't documented in `case class Constant`
454c2a0 2012-05-08 1900 // sort `keys` by increasing key, keeping `branches` in sync. TODO FIXME use quicksort
454c2a0 2012-05-08 1931 /** Calculate in long to guard against overflow. TODO what overflow??? */
454c2a0 2012-05-08 2129 /* TODO test/files/run/exceptions-2.scala displays an ExceptionHandler.covered that contains
454c2a0 2012-05-08 2135 // TODO someday assert(ignore.isEmpty, "an ExceptionHandler.covered contains blocks not in the linearization (dead-code?)")
454c2a0 2012-05-08 2142 // TODO in that case, ExceptionHandler.cls doesn't go through javaName(). What if cls is an inner class?
454c2a0 2012-05-08 2225 // TODO should but isn't: unbalanced start(s) of scope(s)
454c2a0 2012-05-08 2422 if (relevant) { // TODO check: does GenICode emit SCOPE_ENTER, SCOPE_EXIT for synthetic vars?
454c2a0 2012-05-08 2810 // TODO Logical's 2nd elem should be declared ValueTypeKind, to better approximate its allowed values (isIntSized, its comments appears to convey)
454c2a0 2012-05-08 2811 // TODO GenICode uses `toTypeKind` to define that elem, `toValueTypeKind` would be needed instead.
454c2a0 2012-05-08 2812 // TODO How about adding some asserts to Logical and similar ones to capture the remaining constraint (UNIT not allowed).
454c2a0 2012-05-08 3164 * TODO Eventually, these utilities should be moved to IMethod and reused from normalize() (there's nothing JVM-specific about them).
454c2a0 2012-05-08 3198 (eh.cls != NoSymbol) && ( // TODO `eh.isFinallyBlock` more readable than `eh.cls != NoSymbol`
454c2a0 2012-05-08 3208 for(h <- toPrune; r <- h.blocks) { m.code.removeBlock(r) } // TODO m.code.removeExh(h)
454c2a0 2012-05-08 3390 wasReduced |= coverWhatCountsOnly(m); icodes.checkValid(m) // TODO should be unnecessary now that collapseJumpOnlyBlocks(m) is in place
454c2a0 2012-05-08 3394 // TODO see note in genExceptionHandlers about an ExceptionHandler.covered containing dead blocks (newNormal should remove them, but, where do those blocks come from?)
454c2a0 2012-05-08 3397 // TODO this would be a good time to remove synthetic local vars seeing no use, don't forget to call computeLocalVarsIndex() afterwards.
df1b94e 2012-07-10 2219 // TODO SI-6049
= src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
97e78b8 2012-03-06 313 override def javaName(sym: Symbol): String = { // TODO Miguel says: check whether a single pass over `icodes.classes` can populate `innerClassBuffer` faster.
02a1522 2012-03-09 200 val StringBuilderType = new JObjectType(StringBuilderClassName) // TODO use ASMType.getObjectType
02a1522 2012-03-09 201 val toStringType = new JMethodType(JAVA_LANG_STRING, JType.EMPTY_ARRAY) // TODO use ASMType.getMethodType
= src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
72a0e8b 2011-03-20 48 if( opt.showClass.isDefined && (codeGenerator.entryPoint == null) ) { // TODO introduce dedicated setting instead
72a0e8b 2011-03-20 1734 if((entryPoint == null) && opt.showClass.isDefined) { // TODO introduce dedicated setting instead
4cf60d6 2011-04-08 263 case definitions.TransientAttr => null // TODO this is just an example
= src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala
dbd31fb 2012-06-26 117 * TODO check for purity (the ICode?) of the module's constructor (besides m1's purity).
= src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
6255c48 2012-02-17 152 TODO now that Inliner runs faster we could consider additional "monadic methods" (in the limit, all those taking a closure as last arg)
6255c48 2012-02-17 547 if(splicedBlocks.nonEmpty) { // TODO explore (saves time but leads to slightly different inlining decisions)
76b6fd4 2012-05-08 494 /* TODO Do we really want to inline inside exception handlers?
848295e 2012-06-26 674 * TODO handle more robustly the case of a trait var changed at the source-level from public to private[this]
848295e 2012-06-26 974 if(sameSymbols) { // TODO but this also amounts to recursive, ie should lead to adding to tfa.knownNever, right?
= src/reflect/scala/reflect/internal/AnnotationInfos.scala
454c2a0 2012-05-08 117 lazy val encodedBytes = ByteCodecs.encode(bytes) // TODO remove after migration to ASM-based GenJVM complete
454c2a0 2012-05-08 118 def isLong: Boolean = (encodedBytes.length > 65535) // TODO remove after migration to ASM-based GenJVM complete
========================================
Paul Phillips
========================================
= src/compiler/scala/tools/cmd/gen/AnyVals.scala
121f3a9 2012-09-16 323 def nonUnitCompanions = "" // todo
= src/compiler/scala/tools/nsc/Global.scala
5691a39 2011-03-30 1525 // todo: migrationWarnings
da12146 2012-02-25 1095 // TODO - trim these to the absolute minimum.
= src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala
9a9f73b 2011-04-28 241 // //TODO
= src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
1b3054c 2012-08-15 2748 // TODO: the insertion of ListOfNil here is where "new Foo" becomes
= src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
0bea2ab 2011-11-28 970 // TODO - this is where we'd catch dynamic applies for invokedynamic.
= src/compiler/scala/tools/nsc/backend/icode/ICodeCheckers.scala
321ecd8 2011-07-27 55 * @todo Iulian says: I think there's some outdated logic in the checker.
= src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
daa2637 2011-08-01 67 // TODO: make this next claim true, if possible
09188cd 2011-10-27 1060 // TODO: evaluate the other flags we might be dropping on the floor here.
da12146 2012-02-25 321 // TODO: some beforeFlatten { ... } which accounts for
= src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
c5d9b7e 2011-04-28 1084 // @LUC TODO: this can probably break, namely when having: class A { def this() { new A() } }
= src/compiler/scala/tools/nsc/doc/html/page/Template.scala
92f32de 2011-08-05 604 val todo: Seq[scala.xml.Node] =
92f32de 2011-08-05 605 if(!comment.todo.isEmpty) {
92f32de 2011-08-05 608 val todoXml: List[scala.xml.NodeSeq] = (for(todo <- comment.todo ) yield <span class="cmt">{bodyToHtml(todo)}</span> )
92f32de 2011-08-05 613 example ++ version ++ sinceVersion ++ exceptions ++ todo ++ note ++ seeAlso
= src/compiler/scala/tools/nsc/doc/model/ModelFactoryTypeSupport.scala
661ce29 2011-03-31 176 // XXX Still todo: properly printing refinements.
= src/compiler/scala/tools/nsc/interpreter/ILoop.scala
a8926ae 2011-05-29 431 // Still todo: modules.
4a6f54b 2012-04-14 92 /** TODO -
= src/compiler/scala/tools/nsc/interpreter/IMain.scala
33d4562 2011-06-03 202 // TODO: If we try to make naming a lazy val, we run into big time
4a6f54b 2012-04-14 939 // TODO - just use the new trees.
= src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala
b72a9b1 2011-05-07 192 // TODO: Need to track these specially to honor Predef masking attempts,
= src/compiler/scala/tools/nsc/interpreter/Power.scala
0e064a7 2011-03-18 72 def loop(todo: Set[Symbol]): Set[Symbol] = {
0e064a7 2011-03-18 74 val (repeats, unseen) = todo partition seen
= src/compiler/scala/tools/nsc/matching/Patterns.scala
61d34ed 2012-02-16 396 // TODO: for alwaysCovers:
= src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala
112dc4f 2011-04-11 604 // TODO: is there any way this can come back and bite us in the bottom?
= src/compiler/scala/tools/nsc/transform/Erasure.scala
c0e9e75 2012-03-23 503 // TODO: should we do this for user-defined unapplies as well?
= src/compiler/scala/tools/nsc/transform/Mixin.scala
bf6ce00 2012-01-16 212 // TODO preserve pre-erasure info?
bf6ce00 2012-01-16 223 // TODO preserve pre-erasure info?
da12146 2012-02-25 528 afterMixin(currentOwner.owner.info)//todo: needed?
e295186 2012-03-21 184 // TODO: verify we need the updateInfo and document why
= src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
9d55bf4 2012-01-16 77 /** TODO - this is a lot of maps.
= src/compiler/scala/tools/nsc/transform/UnCurry.scala
06384c0 2012-02-22 566 // TODO - settings.noassertions.value temporarily retained to avoid
= src/compiler/scala/tools/nsc/typechecker/Adaptations.scala
4e488a6 2011-07-29 14 * TODO: unifying/consolidating said logic under consistent management.
= src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
05382e2 2011-08-06 166 // TODO: if any of the found parents match up with required parents after normalization,
6fe5754 2011-08-07 928 // TODO: move these somewhere reusable.
= src/compiler/scala/tools/nsc/typechecker/Contexts.scala
b8575e9 2011-06-06 435 // represent the constructor body (TODO: why is there more than one
= src/compiler/scala/tools/nsc/typechecker/Implicits.scala
b8575e9 2011-06-06 663 // TODO: I would prefer to just call typed instead of
b8575e9 2011-06-06 667 // TODO: the return tree is ignored. This seems to make
= src/compiler/scala/tools/nsc/typechecker/Infer.scala
990fa04 2011-08-06 1675 // todo: should not return "false" when paramTypes = (Unit) no argument is given
= src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala
b005cd5 2011-10-28 355 // TODO
7a6fa80 2012-02-11 426 // TODO - reconcile this with the DefDef creator in Trees (which
= src/compiler/scala/tools/nsc/typechecker/Namers.scala
23ab7e3 2011-10-17 171 // FIXME: name comparisons not successful, are these underscores
23ab7e3 2011-10-17 202 // FIXME: The comment "let them co-exist" is confusing given that the
ad3dada 2011-10-21 1521 // TODO: change to isTypeMember ?
290f687 2011-10-22 73 def createPrimaryConstructorParameterNamer: Namer = { //todo: can we merge this with SCCmode?
290f687 2011-10-22 559 if (!tree.symbol.isAbstractType) //@M TODO: change to isTypeMember ?
290f687 2011-10-22 974 // TODO: see whether this or something similar would work instead.
290f687 2011-10-22 1280 // TODO: meta-annotations to indicate class vs. object.
290f687 2011-10-22 1302 // TODO: cleanup parameter list
= src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala
802771b 2012-08-08 220 // Possible TODO: more deeply nested variable patterns, like
= src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
199ec3c 2011-04-28 657 // TODO: what is the optimal way to test for a raw type at this point?
9ae0963 2011-12-30 170 // defines a varargs method. TODO: Find a cheaper way to exclude.
00e9446 2012-04-10 1088 // case equals. TODO - more cases are warnable if the target is a synthetic
= src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
f708b87 2012-03-03 287 // FIXME - this should be unified with needsProtectedAccessor, but some
= src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
39938bc 2012-03-21 279 // TODO - figure out how to avoid doing any work at all
= src/compiler/scala/tools/nsc/typechecker/Typers.scala
9853b5b 2011-06-22 660 // TODO: If the type of the qualifier is inaccessible, we can cause private types
b005cd5 2011-10-28 5446 // TODO: see if this formulation would impose any penalty, since
c5871a9 2012-02-03 5538 // !!! TODO - revisit now that ScalaObject is gone.
1bff570 2012-05-10 85 // TODO - this only catches trees which go through def typed,
08162c5 2012-09-01 5352 case tree: TypeTreeWithDeferredRefCheck => tree // TODO: retype the wrapped tree? TTWDRC would have to change to hold the wrapped tree (not a closure)
= src/compiler/scala/tools/nsc/util/WorkScheduler.scala
7336692 2011-07-14 10 private var todo = new mutable.Queue[Action]
= src/library/scala/collection/IndexedSeqLike.scala
ea0d891 2012-09-15 44 override def hashCode()= scala.util.hashing.MurmurHash3.seqHash(seq) // TODO - can we get faster via "indexedSeqHash" ?
= src/library/scala/collection/LinearSeqLike.scala
ea0d891 2012-09-15 53 override def hashCode()= scala.util.hashing.MurmurHash3.seqHash(seq) // TODO - can we get faster via "linearSeqHash" ?
= src/reflect/scala/reflect/internal/BaseTypeSeqs.scala
fff93cd 2011-05-16 8 // todo implement in terms of BitSet
= src/reflect/scala/reflect/internal/Definitions.scala
9853b5b 2011-06-22 802 // TODO: If T is final, return type could be Class[T]. Should it?
3bd40d8 2012-05-01 965 lazy val MethodTargetClass = requiredClass[meta.companionMethod] // TODO: module, moduleClass? package, packageObject?
= src/reflect/scala/reflect/internal/Flags.scala
6d2b5e1 2011-05-16 152 // todo: make LIFTED = latePRIVATE?
296b706 2012-04-05 228 // TODO - there's no call to slap four flags onto every package.
= src/reflect/scala/reflect/internal/Kinds.scala
82c793a 2011-12-23 35 // @M TODO this method is duplicated all over the place (varianceString)
= src/reflect/scala/reflect/internal/Mirrors.scala
296b706 2012-04-05 243 // TODO - having these as objects means they elude the attempt to
8c95273 2012-04-22 135 // TODO: What syntax do we think should work here? Say you have an object
= src/reflect/scala/reflect/internal/Names.scala
020053c 2012-01-05 144 * TODO - resolve schizophrenia regarding whether to treat Names as Strings
020053c 2012-01-05 394 /** TODO - reconcile/fix that encode returns a Name but
020053c 2012-01-05 423 /** TODO - find some efficiency. */
020053c 2012-01-05 450 * TODO - see if it's any faster to do something along these lines.
5cbd7d0 2012-01-23 88 * TODO - have a mode where name validation is performed at creation time
= src/reflect/scala/reflect/internal/Symbols.scala
2a9781e 2011-06-24 2678 * TODO: the above conditions desperately need to be enforced by code.
f7535f7 2012-03-31 571 def isRootSymbol = false // RootPackage and RootClass. TODO: also NoSymbol.
296b706 2012-04-05 928 // TODO - don't allow the owner to be changed without checking invariants, at least
296b706 2012-04-05 2516 // TODO - this seems a strange definition for "isSourceMethod", given that
1a6408c 2012-04-06 108 // TODO - don't allow names to be renamed in this unstructured a fashion.
b66d390 2012-04-06 2351 override def isSetter = isAccessor && nme.isSetterName(name) // todo: make independent of name, as this can be forged.
b5a0190 2012-04-06 2366 // TODO - rescue CAPTURED from BYNAMEPARAM so we can see all the names.
1a6408c 2012-04-06 2619 // TODO - don't allow names to be renamed in this unstructured a fashion.
= src/reflect/scala/reflect/internal/Types.scala
269ea9a 2011-05-01 3299 // TODO: check whether this ever happens?
fff93cd 2011-05-16 3562 * todo: see how we can clean this up a bit
fff93cd 2011-05-16 3658 case st: SingletonType => appliedType(st.widen, args) // @M TODO: what to do? see bug1
fff93cd 2011-05-16 3722 * TODO:
fff93cd 2011-05-16 5322 // XXX AM TODO: figure out when it is safe and needed to clear the log -- the commented approach below is too eager (it breaks #3281, #3866)
fff93cd 2011-05-16 5334 // XXX AM TODO: figure out when it is safe and needed to clear the log -- the commented approach below is too eager (it breaks #3281, #3866)
fff93cd 2011-05-16 5353 todo: change to:
4cfca8a 2011-11-23 3383 * TODO - is it allowed to nest AnnotatedTypes? If not then let's enforce
5f5029d 2012-01-10 2361 // TODO: test case that is compiled in a specific order and in different runs
2ca7d4f 2012-01-14 2260 // TODO: is there another way a typeref's symbol can refer to a symbol defined in its pre?
ef23611 2012-02-23 4790 // TODO: this should be simplified; in the stable case, one can
ef23611 2012-02-23 4799 // (TODO cont.) Why an existential in the non-stable case?
2a917f4 2012-03-26 2617 //TODO this may be generalised so that the only constraint is dependencies are acyclic
f15dc74 2012-07-27 3340 TypeVar(origin, constr.cloneInternal, typeArgs, params) // @M TODO: clone args/params?
= src/reflect/scala/reflect/internal/util/Collections.scala
8c3b693 2012-04-06 13 * TODO - inlining doesn't work from here because of the bug that
= src/reflect/scala/reflect/internal/util/TraceSymbolActivity.scala
2b89c34 2012-04-05 47 /** TODO.
= src/reflect/scala/reflect/runtime/JavaMirrors.scala
5933b9f 2012-09-16 179 // todo. find out the exact order of assocs as they are written in the class file
= src/reflect/scala/reflect/runtime/SynchronizedSymbols.scala
296b706 2012-04-05 97 // TODO
========================================
Pavel Pavlov
========================================
= src/library/scala/PartialFunction.scala
66b47e1 2012-01-16 72 //TODO: why not overload it with orElse(that: F1): F1?
========================================
Philipp Haller
========================================
= src/library/scala/concurrent/SyncVar.scala
74062e3 2011-08-01 96 // TODO: this method should be private
========================================
Som Snytt
========================================
= src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
9d925a3 2012-04-22 1845 // TODO: dredge out the remnants of regexp patterns.
========================================
Vlad Ureche
========================================
= src/compiler/scala/tools/nsc/backend/opt/InlineExceptionHandlers.scala
63f072f 2011-08-19 108 * TODO: Should we have an inlining depth limit? A nested sequence of n try-catch blocks can lead to at most 2n
63f072f 2011-08-19 131 //TODO: Need a way to clear tfa structures
63f072f 2011-08-19 202 // Here we could create a single local for all exceptions of a certain type. TODO: try that.
= src/compiler/scala/tools/nsc/doc/Settings.scala
355264f 2012-04-13 265 * TODO: Should be configurable
= src/compiler/scala/tools/nsc/doc/html/HtmlPage.scala
dc70d1b 2012-07-12 141 // TODO: add case LinkToExternal here
= src/compiler/scala/tools/nsc/doc/model/MemberLookup.scala
dc70d1b 2012-07-12 38 // TODO: IF THIS IS THE ROOT PACKAGE, LOOK AT EXTERNAL LINKS
= src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala
6167ec6 2012-06-18 785 // TODO: Should be able to override the type
17f745d 2012-07-16 268 def valueParams: List[List[ValueParam]] = Nil /** TODO, these are now only computed for DocTemplates */
= src/compiler/scala/tools/nsc/doc/model/ModelFactoryImplicitSupport.scala
355264f 2012-04-13 53 * TODO: Give an overview here
355264f 2012-04-13 161 // TODO: Isolate this corner case :) - Predef.<%< and put it in the testsuite
355264f 2012-04-13 197 // TODO: no substitution constraints appear in the library and compiler scaladoc. Maybe they can be removed?
355264f 2012-04-13 211 // TODO: Before creating constraints, map typeVarToOriginOrWildcard on the implicitTypes
355264f 2012-04-13 238 // TODO: Not sure this is the right thing to do -- seems similar to what scalac should be doing
355264f 2012-04-13 258 // TODO: This is maybe the worst hack I ever did - it's as dirty as hell, but it seems to work, so until I
= src/compiler/scala/tools/nsc/doc/model/diagram/Diagram.scala
fba6551 2012-06-13 109 * TODO: I think it makes more sense to use the tpe links to templates instead of the TemplateEntity for implicit nodes
= src/compiler/scala/tools/nsc/doc/model/diagram/DiagramDirectiveParser.scala
fba6551 2012-06-13 112 * TODO: Should document the annotation, for now see parseDiagramAnnotation in ModelFactory.scala */
fba6551 2012-06-13 153 // TODO: This could certainly be improved -- right now the only regex is *, but there's no way to match a single identifier
= src/compiler/scala/tools/nsc/doc/model/diagram/DiagramFactory.scala
fba6551 2012-06-13 238 // TODO: Decide if we really want to hide package members, I'm not sure that's a good idea (!!!)
fba6551 2012-06-13 239 // TODO: Does .distinct cause any stability issues?
f8cb1ae 2012-06-28 74 // TODO: Everyone should be able to use the @{inherit,content}Diagram annotation to change the diagrams.
f8cb1ae 2012-06-28 156 // TODO: Everyone should be able to use the @{inherit,content}Diagram annotation to change the diagrams.
dac4e8f 2012-07-16 127 // TODO: Everyone should be able to use the @{inherit,content}Diagram annotation to add nodes to diagrams.
= src/compiler/scala/tools/util/PathResolver.scala
94db9d9 2012-06-08 203 * TODO: we should refactor this as a separate -bootstrap option to have a clean implementation, no? */
= src/reflect/scala/reflect/internal/Types.scala
355264f 2012-04-13 3229 // TODO: can the `suspended` flag be used to poke around without leaving a trace?
========================================
phaller
========================================
= src/library/scala/concurrent/impl/ExecutionContextImpl.scala
2a36246 2012-05-17 76 null, //FIXME we should have an UncaughtExceptionHandler, see what Akka does
========================================
soc
========================================
= src/library/scala/collection/immutable/IntMap.scala
a64c305 2012-06-24 361 if (!hasMatch(p2, p1, m1)) join[S](p1, this, p2, that) // TODO: remove [S] when SI-5548 is fixed
a64c305 2012-06-24 365 if (!hasMatch(p1, p2, m2)) join[S](p1, this, p2, that) // TODO: remove [S] when SI-5548 is fixed
a64c305 2012-06-24 371 else join[S](p1, this, p2, that) // TODO: remove [S] when SI-5548 is fixed
= src/library/scala/collection/immutable/LongMap.scala
f02e19e 2012-06-24 356 if (!hasMatch(p2, p1, m1)) join[S](p1, this, p2, that) // TODO: remove [S] when SI-5548 is fixed
f02e19e 2012-06-24 360 if (!hasMatch(p1, p2, m2)) join[S](p1, this, p2, that) // TODO: remove [S] when SI-5548 is fixed
f02e19e 2012-06-24 366 else join[S](p1, this, p2, that) // TODO: remove [S] when SI-5548 is fixed
f02e19e 2012-06-24 368 case (LongMap.Tip(key, value), x) => x.updateWith[S](key, value, (x, y) => f(key, y, x)) // TODO: remove [S] when SI-5548 is fixed
2.10.x ~/code/scala
import sys.process._
val files = Seq("find", "src/compiler", "src/reflect", "src/library", "-type", "f").lines
val commits = Seq("git", "log", "--oneline", "v2.9.2...master").lines.map(_.split(" ").head).toSet
val Line = """(\w+) *.*? *\((.*?) (\d\d\d\d-\d\d-\d\d) +(\d+)\)(.*)""".r
case class Commit(hash: String, author: String, date: String)
case class Addition(commit: Commit, file: String, lineNum: Int, line: String)
import collection.mutable
val numFiles = files.length
val results = for {
(f, i) <- files.zipWithIndex.par //take 200
if f.endsWith(".scala")
blame = {
println("%s (%d/%d)".format(f, i, numFiles))
Seq("git", "blame", "-w", "-f", "--abbrev=6", "--date=short", "-C", f).lines
}
line <- blame
data <- try {
val Line(hash, author, date, lineNumber, text) = line
Seq(Addition(Commit(hash, author.trim, date.trim), f, lineNumber.toInt, text))
} catch {
case ex: Exception => Seq()
}
if data.line matches """.*\b(TODO|FIXME|!!!)\b.*"""
if commits(data.commit.hash)
} yield {
data
}
for ((author, rs) <- results.groupBy(_.commit.author).toSeq.seq.sortBy(_._1)) {
println()
println("=" * 40)
println(author)
println("=" * 40)
for ((file, rs0) <- rs.groupBy(_.file).toSeq.seq.sortBy(_._1)) {
println("= " + file)
for (r <- rs0.seq.sortBy(_.commit.date))
println(Seq(r.commit.hash, r.commit.date, "%4d ".format(r.lineNum), r.line.trim).mkString(" "))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment